[Python-checkins] python/dist/src/Misc NEWS,1.653,1.654

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Wed, 12 Feb 2003 09:05:30 -0800


Update of /cvsroot/python/python/dist/src/Misc
In directory sc8-pr-cvs1:/tmp/cvs-serv10299

Modified Files:
	NEWS 
Log Message:
SF #660455 : patch by NNorwitz.

"Unsigned" (i.e., positive-looking, but really negative) hex/oct
constants with a leading minus sign are once again properly negated.
The micro-optimization for negated numeric constants did the wrong
thing for such hex/oct constants.  The patch avoids the optimization
for all hex/oct constants.

This needs to be backported to Python 2.2!


Index: NEWS
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v
retrieving revision 1.653
retrieving revision 1.654
diff -C2 -d -r1.653 -r1.654
*** NEWS	12 Feb 2003 03:58:33 -0000	1.653
--- NEWS	12 Feb 2003 17:05:26 -0000	1.654
***************
*** 13,16 ****
--- 13,28 ----
  -----------------
  
+ - Through a bytecode optimizer bug (and I bet you didn't even know
+   Python *had* a bytecode optimizer :-), "unsigned" hex/oct constants
+   with a leading minus sign would come out with the wrong sign.
+   ("Unsigned" hex/oct constants are those with a face value in the
+   range sys.maxint+1 through sys.maxint*2+1, inclusive; these have
+   always been interpreted as negative numbers through sign folding.)
+   E.g. 0xffffffff is -1, and -(0xffffffff) is 1, but -0xffffffff would
+   come out as -4294967295.  This was the case in Python 2.2 through
+   2.2.2 and 2.3a1, and in Python 2.4 it will once again have that
+   value, but according to PEP 237 it really needs to be 1 now.  This
+   will be backported to Python 2.2.3 a well.  (SF #660455)
+ 
  - super(X, x): x may now be a proxy for an X instance, i.e.
    issubclass(x.__class__, X) but not issubclass(type(x), X).