cvsuser     04/11/22 02:46:41

  Modified:    classes  perlint.pmc
  Log:
  fix 32549
  
  Revision  Changes    Path
  1.82      +9 -6      parrot/classes/perlint.pmc
  
  Index: perlint.pmc
  ===================================================================
  RCS file: /cvs/public/parrot/classes/perlint.pmc,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- perlint.pmc       20 Nov 2004 12:10:09 -0000      1.81
  +++ perlint.pmc       22 Nov 2004 10:46:41 -0000      1.82
  @@ -1,6 +1,6 @@
   /*
   Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
  -$Id: perlint.pmc,v 1.81 2004/11/20 12:10:09 leo Exp $
  +$Id: perlint.pmc,v 1.82 2004/11/22 10:46:41 leo Exp $
   
   =head1 NAME
   
  @@ -388,7 +388,7 @@
           INTVAL a = PMC_int_val(SELF);
           INTVAL b = PMC_int_val(value);
           INTVAL c = a - b;
  -        if ((c^a) >= 0 || (c^b) >= 0)
  +        if ((c^a) >= 0 || (c^~b) >= 0)
               VTABLE_set_integer_native(INTERP, dest, c);
           else
               overflow(INTERP, SELF, b, dest, MMD_SUBTRACT_INT);
  @@ -397,7 +397,7 @@
           INTVAL a = PMC_int_val(SELF);
           INTVAL b = PMC_int_val(value);
           INTVAL c = a - b;
  -        if ((c^a) >= 0 || (c^b) >= 0)
  +        if ((c^a) >= 0 || (c^~b) >= 0)
               VTABLE_set_integer_native(INTERP, dest, c);
           else
               overflow(INTERP, SELF, b, dest, MMD_SUBTRACT_INT);
  @@ -444,9 +444,12 @@
   
   */
       void subtract_int (INTVAL value, PMC* dest) {
  -        VTABLE_set_integer_native(INTERP, dest,
  -            PMC_int_val(SELF) - value
  -        );
  +        INTVAL a = PMC_int_val(SELF);
  +        INTVAL c = a - b;
  +        if ((c^a) >= 0 || (c^~b) >= 0)
  +            VTABLE_set_integer_native(INTERP, dest, c);
  +        else
  +            overflow(INTERP, SELF, b, dest, MMD_SUBTRACT_INT);
       }
   
   /*
  
  
  

Reply via email to