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

Attachment: pgp0PIB3zptR3.pgp
Description: PGP signature

Reply via email to