# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46223]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46223 >


Coverity Prevent mentions that the code after the C<if (p1 || p2)>
comparison in src/pmc/pair.pmc can never be executed.  Here is the
offending chunk of code (the comments are mine):

 p1 = PMC_pmc_val(SELF);
 p2 = PMC_pmc_val(value);

 if (!p1 && !p2)
    return 1;  /* when p1 = p2 = null, or p1 = p2 = non-null */

 if (p1 || p2)
    return 0; /* when p1 = null, p2 = non-null, or p1 = non-null, p2 = null */

/* which handles all permutations of p1 and p2 */

/* hence, the following code can never be executed */
 if (!mmd_dispatch_i_pp(INTERP, p1, p2, MMD_EQ))
    return 0;

 return 1;

The attached patch removes the dead code, and 'make test' passes.  If
there are no complaints, I'll apply this patch in about 3 days; if it
is approved, as soon as I am able.

Paul

Index: src/pmc/pair.pmc
===================================================================
--- src/pmc/pair.pmc    (revision 21951)
+++ src/pmc/pair.pmc    (working copy)
@@ -202,11 +202,6 @@
 
          if (p1 || p2)
              return 0;
-
-        if (!mmd_dispatch_i_pp(INTERP, p1, p2, MMD_EQ))
-            return 0;
-
-        return 1;
      }
     
 /*

Reply via email to