]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport 1.51 and 1.54 from trunk.
authorGuido van Rossum <guido@python.org>
Mon, 23 Sep 2002 20:59:28 +0000 (20:59 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 23 Sep 2002 20:59:28 +0000 (20:59 +0000)
1.51:
Bug #556025: list(xrange(1e9)) --> seg fault

Close the bug report again -- this time for Cygwin due to a newlib bug.
See the following for the details:

http://sources.redhat.com/ml/newlib/2002/msg00369.html

Note that this commit is only a documentation (i.e., comment) change.

1.54:
The list(xrange(sys.maxint / 4)) test blew up on 64-bit platforms.
Because ob_size is a 32-bit int but sys.maxint is LONG_MAX which is a
64-bit value, there's no way to make this test succeed on a 64-bit
platform.  So just skip it when sys.maxint isn't 0x7fffffff.

Lib/test/test_b1.py

index e30f3bfcc0ad7f8303e20b6e62cd0769bf688a2f..a3c886fdaff30bd68b5863956d3cf692e64be8f0 100644 (file)
@@ -499,16 +499,27 @@ if list((0, 1, 2, 3)) != [0, 1, 2, 3]: raise TestFailed, 'list((0, 1, 2, 3))'
 if list('') != []: raise TestFailed, 'list('')'
 if list('spam') != ['s', 'p', 'a', 'm']: raise TestFailed, "list('spam')"
 
-try:
-    # Verify clearing of bug #556025
-    # this assumes that the max data size (sys.maxint) == max address size
-    # this also assumes that the address size is at least 4 bytes
-    # with 8 byte addresses, the bug is not well tested
-    list(xrange(sys.maxint / 4))
-except MemoryError:
-    pass
-else:
-    raise TestFailed, 'list(xrange(sys.maxint / 4))'
+if sys.maxint == 0x7fffffff:
+    # This test can currently only work on 32-bit machines.
+    # XXX If/when PySequence_Length() returns a ssize_t, it should be
+    # XXX re-enabled.
+    try:
+        # Verify clearing of bug #556025.
+        # This assumes that the max data size (sys.maxint) == max
+        # address size this also assumes that the address size is at
+        # least 4 bytes with 8 byte addresses, the bug is not well
+        # tested
+        #
+        # Note: This test is expected to SEGV under Cygwin 1.3.12 or
+        # earlier due to a newlib bug.  See the following mailing list
+        # thread for the details:
+
+        #     http://sources.redhat.com/ml/newlib/2002/msg00369.html
+        list(xrange(sys.maxint / 4))
+    except MemoryError:
+        pass
+    else:
+        raise TestFailed, 'list(xrange(sys.maxint / 4))'
 
 print 'long'
 if long(314) != 314L: raise TestFailed, 'long(314)'