]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport of Tim's checkin 1.35:
authorThomas Wouters <thomas@python.org>
Wed, 27 Jun 2001 14:26:58 +0000 (14:26 +0000)
committerThomas Wouters <thomas@python.org>
Wed, 27 Jun 2001 14:26:58 +0000 (14:26 +0000)
SF bug 434186: 0x80000000/2 != 0x80000000>>1
i_divmod:  New and simpler algorithm.  Old one returned gibberish on most
boxes when the numerator was -sys.maxint-1.  Oddly enough, it worked in the
release (not debug) build on Windows, because the compiler optimized away
some tricky sign manipulations that were incorrect in this case.
Makes you wonder <wink> ...

Lib/test/test_b1.py

index ea09d0be8ce04c124ab392f418fd1106fae0c84f..e2cc49b16ab00d29c3d79c88dffaa102954cf678 100644 (file)
@@ -367,6 +367,13 @@ except ValueError:
 else:
     raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
 
+# SF bug 434186:  0x80000000/2 != 0x80000000>>1.
+# Worked by accident in Windows release build, but failed in debug build.
+# Failed in all Linux builds.
+x = -1-sys.maxint
+if x >> 1 != x/2:
+    raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint")
+
 print 'isinstance'
 class C:
     pass