Whitespace normalization.

This commit is contained in:
Tim Peters 2004-01-18 20:29:55 +00:00
parent 5303a96808
commit 58eb11cf62
34 changed files with 69 additions and 76 deletions

View file

@ -142,7 +142,7 @@ class StringIO:
return lines return lines
def truncate(self, size=None): def truncate(self, size=None):
_complain_ifclosed(self.closed) _complain_ifclosed(self.closed)
if size is None: if size is None:
size = self.pos size = self.pos
elif size < 0: elif size < 0:

View file

@ -365,7 +365,7 @@ def strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
# be able to tell what timezone has daylight savings # be able to tell what timezone has daylight savings
if time.tzname[0] == time.tzname[1] and \ if time.tzname[0] == time.tzname[1] and \
time.daylight: time.daylight:
break break
else: else:
tz = value tz = value
break break

View file

@ -171,7 +171,8 @@ class build_ext (Command):
# Append the source distribution include and library directories, # Append the source distribution include and library directories,
# this allows distutils on windows to work in the source tree # this allows distutils on windows to work in the source tree
self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC')) self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC'))
self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild')) self.library_dirs.append(os.path.join(sys.exec_prefix, 'PC', 'VC6'))
#self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild'))
# OS/2 (EMX) doesn't support Debug vs Release builds, but has the # OS/2 (EMX) doesn't support Debug vs Release builds, but has the
# import libraries in its "Config" subdirectory # import libraries in its "Config" subdirectory

View file

@ -610,7 +610,7 @@ class HTTPConnection:
if self.__response and self.__response.isclosed(): if self.__response and self.__response.isclosed():
self.__response = None self.__response = None
# in certain cases, we cannot issue another request on this connection. # in certain cases, we cannot issue another request on this connection.
# this occurs when: # this occurs when:
# 1) we are in the process of sending a request. (_CS_REQ_STARTED) # 1) we are in the process of sending a request. (_CS_REQ_STARTED)
@ -731,7 +731,7 @@ class HTTPConnection:
# If headers already contains a host header, then define the # If headers already contains a host header, then define the
# optional skip_host argument to putrequest(). The check is # optional skip_host argument to putrequest(). The check is
# harder because field names are case insensitive. # harder because field names are case insensitive.
if 'host' in [k.lower() for k in headers]: if 'host' in [k.lower() for k in headers]:
self.putrequest(method, url, skip_host=1) self.putrequest(method, url, skip_host=1)
else: else:
self.putrequest(method, url) self.putrequest(method, url)

View file

@ -177,7 +177,7 @@ class Random(_random.Random):
# compatibility). # compatibility).
if width >= maxwidth: if width >= maxwidth:
return int(istart + self._randbelow(width)) return int(istart + self._randbelow(width))
return int(istart + int(self.random()*width)) return int(istart + int(self.random()*width))
if step == 1: if step == 1:
raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width) raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width)

View file

@ -365,9 +365,9 @@ def _parse_sub(source, state, nested=1):
return subpattern return subpattern
def _parse_sub_cond(source, state, condgroup): def _parse_sub_cond(source, state, condgroup):
item_yes = _parse(source, state) item_yes = _parse(source, state)
if source.match("|"): if source.match("|"):
item_no = _parse(source, state) item_no = _parse(source, state)
if source.match("|"): if source.match("|"):
raise error, "conditional backref with more than two branches" raise error, "conditional backref with more than two branches"
else: else:

View file

@ -264,4 +264,3 @@ if __name__ == '__main__':
else: else:
loops = LOOPS loops = LOOPS
main(loops) main(loops)

View file

@ -55,7 +55,7 @@ class TestApplesingle(unittest.TestCase):
applesingle.decode(test_support.TESTFN, TESTFN2) applesingle.decode(test_support.TESTFN, TESTFN2)
self.compareData(False, dataforkdata) self.compareData(False, dataforkdata)
self.compareData(True, resourceforkdata) self.compareData(True, resourceforkdata)
def test_applesingle_resonly(self): def test_applesingle_resonly(self):
try: try:
os.unlink(TESTFN2) os.unlink(TESTFN2)

View file

@ -697,7 +697,7 @@ class CodecCallbackTest(unittest.TestCase):
ord(">"): u"&gt;", ord(">"): u"&gt;",
ord('"'): u"&quot;", ord('"'): u"&quot;",
} }
for n in (1, 10, 100, 1000): for n in (1, 10, 100, 1000):
text = u'abc<def>ghi'*n text = u'abc<def>ghi'*n
text.translate(charmap) text.translate(charmap)

View file

@ -27,8 +27,8 @@ class Test_GBK(test_multibytecodec_support.TestBase, unittest.TestCase):
tstring = test_multibytecodec_support.load_teststring('gbk') tstring = test_multibytecodec_support.load_teststring('gbk')
codectests = ( codectests = (
# invalid bytes # invalid bytes
("abc\x80\x80\xc1\xc4", "strict", None), ("abc\x80\x80\xc1\xc4", "strict", None),
("abc\xc8", "strict", None), ("abc\xc8", "strict", None),
("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"), ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"), ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
("abc\x80\x80\xc1\xc4", "ignore", u"abc\u804a"), ("abc\x80\x80\xc1\xc4", "ignore", u"abc\u804a"),
@ -58,4 +58,3 @@ def test_main():
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -131,4 +131,3 @@ def test_main():
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -54,4 +54,3 @@ def test_main():
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -28,4 +28,3 @@ def test_main():
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -31,4 +31,3 @@ def test_main():
test_multibytecodec_support.register_skip_expected(TestGB2312Map, TestGBKMap) test_multibytecodec_support.register_skip_expected(TestGB2312Map, TestGBKMap)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -87,4 +87,3 @@ test_multibytecodec_support.register_skip_expected(TestCP932Map,
TestSJISX0213Map) TestSJISX0213Map)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -48,4 +48,3 @@ test_multibytecodec_support.register_skip_expected(TestCP949Map,
TestEUCKRMap, TestJOHABMap) TestEUCKRMap, TestJOHABMap)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -36,4 +36,3 @@ def test_main():
test_multibytecodec_support.register_skip_expected(TestBIG5Map, TestCP950Map) test_multibytecodec_support.register_skip_expected(TestBIG5Map, TestCP950Map)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -204,7 +204,7 @@ def unit_tests():
]: ]:
if ascii.unctrl(ch) != expected: if ascii.unctrl(ch) != expected:
print 'curses.unctrl fails on character', repr(ch) print 'curses.unctrl fails on character', repr(ch)
def main(stdscr): def main(stdscr):
@ -215,7 +215,7 @@ def main(stdscr):
finally: finally:
curses.resetty() curses.resetty()
if __name__ == '__main__': if __name__ == '__main__':
curses.wrapper(main) curses.wrapper(main)
unit_tests() unit_tests()

View file

@ -3966,7 +3966,7 @@ def vicious_descriptor_nonsense():
# this makes a crash more likely: # this makes a crash more likely:
import gc; gc.collect() import gc; gc.collect()
vereq(hasattr(c, 'attr'), False) vereq(hasattr(c, 'attr'), False)
def test_main(): def test_main():
weakref_segfault() # Must be first, somehow weakref_segfault() # Must be first, somehow

View file

@ -15,4 +15,3 @@ class TestSFbugs(unittest.TestCase):
Doctests = doctest.DocTestSuite(difflib) Doctests = doctest.DocTestSuite(difflib)
test_support.run_unittest(TestSFbugs, Doctests) test_support.run_unittest(TestSFbugs, Doctests)

View file

@ -55,7 +55,7 @@ class IntTestCase(unittest.TestCase):
new = marshal.load(file(test_support.TESTFN, "rb")) new = marshal.load(file(test_support.TESTFN, "rb"))
self.assertEqual(b, new) self.assertEqual(b, new)
self.assertEqual(type(b), type(new)) self.assertEqual(type(b), type(new))
class FloatTestCase(unittest.TestCase): class FloatTestCase(unittest.TestCase):
def test_floats(self): def test_floats(self):
# Test a few floats # Test a few floats
@ -122,7 +122,7 @@ class StringTestCase(unittest.TestCase):
marshal.load(file(test_support.TESTFN, "rb")) marshal.load(file(test_support.TESTFN, "rb"))
self.assertEqual(s, new) self.assertEqual(s, new)
os.unlink(test_support.TESTFN) os.unlink(test_support.TESTFN)
class ExceptionTestCase(unittest.TestCase): class ExceptionTestCase(unittest.TestCase):
def test_exceptions(self): def test_exceptions(self):
new = marshal.loads(marshal.dumps(StopIteration)) new = marshal.loads(marshal.dumps(StopIteration))
@ -151,7 +151,7 @@ class ContainerTestCase(unittest.TestCase):
marshal.load(file(test_support.TESTFN, "rb")) marshal.load(file(test_support.TESTFN, "rb"))
self.assertEqual(self.d, new) self.assertEqual(self.d, new)
os.unlink(test_support.TESTFN) os.unlink(test_support.TESTFN)
def test_list(self): def test_list(self):
lst = self.d.items() lst = self.d.items()
new = marshal.loads(marshal.dumps(lst)) new = marshal.loads(marshal.dumps(lst))
@ -169,7 +169,7 @@ class ContainerTestCase(unittest.TestCase):
marshal.load(file(test_support.TESTFN, "rb")) marshal.load(file(test_support.TESTFN, "rb"))
self.assertEqual(t, new) self.assertEqual(t, new)
os.unlink(test_support.TESTFN) os.unlink(test_support.TESTFN)
class BugsTestCase(unittest.TestCase): class BugsTestCase(unittest.TestCase):
def test_bug_5888452(self): def test_bug_5888452(self):
# Simple-minded check for SF 588452: Debug build crashes # Simple-minded check for SF 588452: Debug build crashes

View file

@ -26,9 +26,9 @@ class MD5_Test(unittest.TestCase):
eq('abc', '900150983cd24fb0d6963f7d28e17f72') eq('abc', '900150983cd24fb0d6963f7d28e17f72')
eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0') eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0')
eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b') eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b')
eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
'd174ab98d277d9f5a5611c2c9f419d9f') 'd174ab98d277d9f5a5611c2c9f419d9f')
eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890',
'57edf4a22be3c955ac49da2e2107b67a') '57edf4a22be3c955ac49da2e2107b67a')
def test_hexdigest(self): def test_hexdigest(self):

View file

@ -76,4 +76,3 @@ def test_main():
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -230,4 +230,3 @@ def register_skip_expected(*cases):
break break
else: else:
sys.modules[case.__module__].skip_expected = False sys.modules[case.__module__].skip_expected = False

View file

@ -319,10 +319,10 @@ class MakedirTests (unittest.TestCase):
path = os.path.join(base, 'dir1', os.curdir, 'dir2', 'dir3', 'dir4', path = os.path.join(base, 'dir1', os.curdir, 'dir2', 'dir3', 'dir4',
'dir5', 'dir6') 'dir5', 'dir6')
os.makedirs(path) os.makedirs(path)
def tearDown(self): def tearDown(self):
path = os.path.join(test_support.TESTFN, 'dir1', 'dir2', 'dir3', path = os.path.join(test_support.TESTFN, 'dir1', 'dir2', 'dir3',
'dir4', 'dir5', 'dir6') 'dir4', 'dir5', 'dir6')

View file

@ -405,7 +405,7 @@ class ReTests(unittest.TestCase):
20003) 20003)
self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001) self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001)
# non-simple '*?' still used to hit the recursion limit, before the # non-simple '*?' still used to hit the recursion limit, before the
# non-recursive scheme was implemented. # non-recursive scheme was implemented.
self.assertEqual(re.search('(a|b)*?c', 10000*'ab'+'cd').end(0), 20001) self.assertEqual(re.search('(a|b)*?c', 10000*'ab'+'cd').end(0), 20001)
def test_bug_612074(self): def test_bug_612074(self):

View file

@ -179,7 +179,7 @@ class TestJointOps(unittest.TestCase):
def __init__(self, value): def __init__(self, value):
self.value = value self.value = value
def __hash__(self): def __hash__(self):
return self.value return self.value
def __deepcopy__(self, memo=None): def __deepcopy__(self, memo=None):
return Tracer(self.value + 1) return Tracer(self.value + 1)
t = Tracer(10) t = Tracer(10)

View file

@ -270,5 +270,3 @@ def test_main(verbose=None):
if __name__ == "__main__": if __name__ == "__main__":
test_main(verbose=True) test_main(verbose=True)

View file

@ -141,7 +141,7 @@ else:
# which have special Unicode support in posixmodule. # which have special Unicode support in posixmodule.
if (not hasattr(sys, "getwindowsversion") or if (not hasattr(sys, "getwindowsversion") or
sys.getwindowsversion()[3] < 2): # 0=win32s or 1=9x/ME sys.getwindowsversion()[3] < 2): # 0=win32s or 1=9x/ME
TESTFN_UNICODE_UNENCODEABLE = None TESTFN_UNICODE_UNENCODEABLE = None
else: else:
# Japanese characters (I think - from bug 846133) # Japanese characters (I think - from bug 846133)
TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b" TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b"

View file

@ -20,7 +20,7 @@ def remove_if_exists(filename):
class TestUnicodeFiles(unittest.TestCase): class TestUnicodeFiles(unittest.TestCase):
# The 'do_' functions are the actual tests. They generally assume the # The 'do_' functions are the actual tests. They generally assume the
# file already exists etc. # file already exists etc.
# Do all the tests we can given only a single filename. The file should # Do all the tests we can given only a single filename. The file should
# exist. # exist.
def _do_single(self, filename): def _do_single(self, filename):
@ -39,7 +39,7 @@ class TestUnicodeFiles(unittest.TestCase):
# basename should appear in listdir. # basename should appear in listdir.
path, base = os.path.split(os.path.abspath(filename)) path, base = os.path.split(os.path.abspath(filename))
self.failUnless(base in os.listdir(path)) self.failUnless(base in os.listdir(path))
# Do as many "equivalancy' tests as we can - ie, check that although we # Do as many "equivalancy' tests as we can - ie, check that although we
# have different types for the filename, they refer to the same file. # have different types for the filename, they refer to the same file.
def _do_equivilent(self, filename1, filename2): def _do_equivilent(self, filename1, filename2):
@ -124,7 +124,7 @@ class TestUnicodeFiles(unittest.TestCase):
self._do_single(filename) self._do_single(filename)
finally: finally:
os.unlink(filename) os.unlink(filename)
def _test_equivalent(self, filename1, filename2): def _test_equivalent(self, filename1, filename2):
remove_if_exists(filename1) remove_if_exists(filename1)
self.failUnless(not os.path.exists(filename2)) self.failUnless(not os.path.exists(filename2))

View file

@ -269,6 +269,14 @@ class OpenerDirectorTests(unittest.TestCase):
isinstance(args[1], MockResponse)) isinstance(args[1], MockResponse))
def sanepathname2url(path):
import urllib
urlpath = urllib.pathname2url(path)
if os.name == "nt" and urlpath.startswith("///"):
urlpath = urlpath[2:]
# XXX don't ask me about the mac...
return urlpath
class HandlerTests(unittest.TestCase): class HandlerTests(unittest.TestCase):
def test_ftp(self): def test_ftp(self):
@ -323,19 +331,17 @@ class HandlerTests(unittest.TestCase):
h = urllib2.FileHandler() h = urllib2.FileHandler()
o = h.parent = MockOpener() o = h.parent = MockOpener()
#from test_support import TESTFN TESTFN = test_support.TESTFN
TESTFN = "test.txt" urlpath = sanepathname2url(os.path.abspath(TESTFN))
towrite = "hello, world\n" towrite = "hello, world\n"
for url in [ for url in [
"file://localhost%s/%s" % (os.getcwd(), TESTFN), "file://localhost%s" % urlpath,
"file://%s/%s" % (os.getcwd(), TESTFN), "file://%s" % urlpath,
"file://%s%s/%s" % (socket.gethostbyname('localhost'), "file://%s%s" % (socket.gethostbyname('localhost'), urlpath),
os.getcwd(), TESTFN), "file://%s%s" % (socket.gethostbyname(socket.gethostname()),
"file://%s%s/%s" % (socket.gethostbyname(socket.gethostname()), urlpath),
os.getcwd(), TESTFN),
# XXX Windows / Mac format(s), ... ?
]: ]:
f = open(TESTFN, "w") f = open(TESTFN, "wb")
try: try:
try: try:
f.write(towrite) f.write(towrite)
@ -345,25 +351,21 @@ class HandlerTests(unittest.TestCase):
r = h.file_open(Request(url)) r = h.file_open(Request(url))
try: try:
data = r.read() data = r.read()
read_time = time.time()
headers = r.info() headers = r.info()
newurl = r.geturl() newurl = r.geturl()
finally: finally:
r.close() r.close()
stats = os.stat(TESTFN)
modified = rfc822.formatdate(stats.st_mtime)
finally: finally:
os.remove(TESTFN) os.remove(TESTFN)
self.assertEqual(data, towrite) self.assertEqual(data, towrite)
self.assertEqual(headers["Content-type"], "text/plain") self.assertEqual(headers["Content-type"], "text/plain")
self.assertEqual(headers["Content-length"], "13") self.assertEqual(headers["Content-length"], "13")
# Fudge Last-modified string comparison by one second to self.assertEqual(headers["Last-modified"], modified)
# prevent spurious failure on crossing a second boundary while
# executing this test.
unfudged = rfc822.formatdate(read_time)
fudged = rfc822.formatdate(read_time-1)
self.assert_(headers["Last-modified"] in [unfudged, fudged])
for url in [ for url in [
"file://localhost:80%s/%s" % (os.getcwd(), TESTFN), "file://localhost:80%s" % urlpath,
# XXXX bug: these fail with socket.gaierror, should be URLError # XXXX bug: these fail with socket.gaierror, should be URLError
## "file://%s:80%s/%s" % (socket.gethostbyname('localhost'), ## "file://%s:80%s/%s" % (socket.gethostbyname('localhost'),
## os.getcwd(), TESTFN), ## os.getcwd(), TESTFN),
@ -371,7 +373,7 @@ class HandlerTests(unittest.TestCase):
## (os.getcwd(), TESTFN), ## (os.getcwd(), TESTFN),
]: ]:
try: try:
f = open(TESTFN, "w") f = open(TESTFN, "wb")
try: try:
f.write(towrite) f.write(towrite)
finally: finally:

View file

@ -219,7 +219,7 @@ def format_exc(limit=None):
return ''.join(format_exception(etype, value, tb, limit)) return ''.join(format_exception(etype, value, tb, limit))
finally: finally:
etype = value = tb = None etype = value = tb = None
def print_last(limit=None, file=None): def print_last(limit=None, file=None):
"""This is a shorthand for 'print_exception(sys.last_type, """This is a shorthand for 'print_exception(sys.last_type,

View file

@ -426,11 +426,11 @@ class BaseHandler:
def add_parent(self, parent): def add_parent(self, parent):
self.parent = parent self.parent = parent
def close(self): def close(self):
# Only exists for backwards compatibility # Only exists for backwards compatibility
pass pass
def __lt__(self, other): def __lt__(self, other):
if not hasattr(other, "handler_order"): if not hasattr(other, "handler_order"):
# Try to preserve the old behavior of having custom classes # Try to preserve the old behavior of having custom classes
@ -770,7 +770,7 @@ class AbstractDigestAuthHandler:
# prompting for the information. Crap. This isn't great # prompting for the information. Crap. This isn't great
# but it's better than the current 'repeat until recursion # but it's better than the current 'repeat until recursion
# depth exceeded' approach <wink> # depth exceeded' approach <wink>
raise HTTPError(req.get_full_url(), 401, "digest auth failed", raise HTTPError(req.get_full_url(), 401, "digest auth failed",
headers, None) headers, None)
else: else:
self.retried += 1 self.retried += 1
@ -845,7 +845,7 @@ class AbstractDigestAuthHandler:
else: else:
# XXX handle auth-int. # XXX handle auth-int.
pass pass
# XXX should the partial digests be encoded too? # XXX should the partial digests be encoded too?
base = 'username="%s", realm="%s", nonce="%s", uri="%s", ' \ base = 'username="%s", realm="%s", nonce="%s", uri="%s", ' \
@ -887,7 +887,7 @@ class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
def http_error_401(self, req, fp, code, msg, headers): def http_error_401(self, req, fp, code, msg, headers):
host = urlparse.urlparse(req.get_full_url())[1] host = urlparse.urlparse(req.get_full_url())[1]
retry = self.http_error_auth_reqed('www-authenticate', retry = self.http_error_auth_reqed('www-authenticate',
host, req, headers) host, req, headers)
self.reset_retry_count() self.reset_retry_count()
return retry return retry
@ -899,7 +899,7 @@ class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
def http_error_407(self, req, fp, code, msg, headers): def http_error_407(self, req, fp, code, msg, headers):
host = req.get_host() host = req.get_host()
retry = self.http_error_auth_reqed('proxy-authenticate', retry = self.http_error_auth_reqed('proxy-authenticate',
host, req, headers) host, req, headers)
self.reset_retry_count() self.reset_retry_count()
return retry return retry
@ -964,7 +964,7 @@ class AbstractHTTPHandler(BaseHandler):
raise URLError(err) raise URLError(err)
# Pick apart the HTTPResponse object to get the various pieces # Pick apart the HTTPResponse object to get the various pieces
# of the # of the
resp = addinfourl(r.fp, r.msg, req.get_full_url()) resp = addinfourl(r.fp, r.msg, req.get_full_url())
resp.code = r.status resp.code = r.status
resp.msg = r.reason resp.msg = r.reason

View file

@ -57,13 +57,15 @@ PyList_New(int size)
{ {
PyListObject *op; PyListObject *op;
size_t nbytes; size_t nbytes;
int allocated_size = roundupsize(size);
if (size < 0) { if (size < 0) {
PyErr_BadInternalCall(); PyErr_BadInternalCall();
return NULL; return NULL;
} }
nbytes = size * sizeof(PyObject *); nbytes = allocated_size * sizeof(PyObject *);
/* Check for overflow */ /* Check for overflow */
if (nbytes / sizeof(PyObject *) != (size_t)size) { if (nbytes / sizeof(PyObject *) != (size_t)allocated_size) {
return PyErr_NoMemory(); return PyErr_NoMemory();
} }
op = PyObject_GC_New(PyListObject, &PyList_Type); op = PyObject_GC_New(PyListObject, &PyList_Type);
@ -78,7 +80,7 @@ PyList_New(int size)
if (op->ob_item == NULL) { if (op->ob_item == NULL) {
return PyErr_NoMemory(); return PyErr_NoMemory();
} }
memset(op->ob_item, 0, sizeof(*op->ob_item) * size); memset(op->ob_item, 0, sizeof(*op->ob_item) * allocated_size);
} }
op->ob_size = size; op->ob_size = size;
_PyObject_GC_TRACK(op); _PyObject_GC_TRACK(op);
@ -154,7 +156,8 @@ ins1(PyListObject *self, int where, PyObject *v)
return -1; return -1;
} }
items = self->ob_item; items = self->ob_item;
NRESIZE(items, PyObject *, self->ob_size+1); if (roundupsize(self->ob_size) - 1 == self->ob_size || items == NULL)
NRESIZE(items, PyObject *, self->ob_size+1);
if (items == NULL) { if (items == NULL) {
PyErr_NoMemory(); PyErr_NoMemory();
return -1; return -1;
@ -1878,7 +1881,8 @@ listsort(PyListObject *self, PyObject *args, PyObject *kwds)
saved_ob_size = self->ob_size; saved_ob_size = self->ob_size;
saved_ob_item = self->ob_item; saved_ob_item = self->ob_item;
self->ob_size = 0; self->ob_size = 0;
self->ob_item = empty_ob_item = PyMem_NEW(PyObject *, 0); /* self->ob_item = empty_ob_item = PyMem_NEW(PyObject *, 0); */
self->ob_item = empty_ob_item = PyMem_NEW(PyObject *, roundupsize(0));
if (keyfunc != NULL) { if (keyfunc != NULL) {
for (i=0 ; i < saved_ob_size ; i++) { for (i=0 ; i < saved_ob_size ; i++) {