found 497196 0.0.90 thanks On Sat, 30 Aug 2008 16:21:25 -0700 Junichi Uekawa wrote:
> I've uploaded a new version, please see if anything looks wrong.
It seems you overgeneralized the fix.
You discarded a pair of cases and lumped them with the case I proposed
to change.
Let's analyze all possible cases.
Time increases from left to right.
The various cases show if there are and where are the versions
detected as fixed_max_below, found_max_below, fixed_min_above,
and found_min_above.
Legend: V version under consideration
o version where the bug is found
x version where the bug is fixed
? irrelevant data
a) ----------------V------------------ buggy
b) ----------------V------x----------- buggy
c) ----------------V------o----------- non-buggy
d) ----------------V------o----x------ non-buggy
e) ----------------V------x----o------ buggy
f) ----------o-----V--- ? -- ? -- ? -- buggy
g) ----------x-----V--- ? -- ? -- ? -- non-buggy
h) -----o----x-----V--- ? -- ? -- ? -- non-buggy
i) -----x----o-----V--- ? -- ? -- ? -- buggy
Please note that these are all the possible cases.
I hope you agree with me on the above cases and on their respective
results.
Let's review the code of apt-listbugs/0.0.90:
if fixed_max_below == nil && found_max_below == nil
# this is a hard thing to handle, but do some guessing here [one of
cases a,b,c,d,e]
if found_min_above == nil # [one of cases a,b => buggy]
puts " ... found is nil; I guess I am buggy" if $DEBUG
val=true # [OK]
else if fixed_min_above == nil # [case c => non-buggy]
puts " ... fixed is nil; bug is not fixed later than this
version, I guess I am buggy?" if $DEBUG
val=true # [this should be val=false, as already reported]
else if Debian::Dpkg.compare_versions(fixed_min_above, "gt",
found_min_above) # [case d => non-buggy]
puts " ... Bug is found later than this version, this
version is nonbuggy" if $DEBUG
val=false # [OK]
else # [case e => buggy]
puts " ... bug is fixed later than this version, this
version is possibly buggy" if $DEBUG
val=true # [OK]
end
end
end
else if fixed_max_below == nil # [case f => buggy]
puts " ... found in prior version but not yet fixed" if $DEBUG
val=true # [OK]
else if found_max_below == nil ||
Debian::Dpkg.compare_versions(fixed_max_below, "gt", found_max_below)
# this bugreport has recently been fixed # [case g, or case
h => non-buggy]
puts " ... this bugreport is not found in this version or
fixed_max_below > found_max_below: assuming that this bug does not apply for
this version" if $DEBUG
val=false # [OK]
else # [case i => buggy]
# default path. [default is true: OK]
end
end
end
val
end
In apt-listbugs/0.0.91 you discarded the code which handles cases d and
e, lumping them together with case c and setting val=false for all of
them.
This means that, whenever we are in case e, we set val to the wrong
value (it gets false, while it should get true).
Hence, I re-propose the simpler fix that I suggested in my initial
message: just change case c (setting val=false) and leave the rest of
logic.rb from apt-listbugs/0.0.90 untouched!
--
http://frx.netsons.org/doc/index.html#nanodocs
The nano-document series is here!
..................................................... Francesco Poli .
GnuPG key fpr == C979 F34B 27CE 5CD8 DC12 31B5 78F4 279B DD6D FCF4
pgp0PIB3zptR3.pgp
Description: PGP signature

