Merged revisions 70189 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r70189 | hirokazu.yamamoto | 2009-03-05 23:21:12 +0900 | 4 lines

  Issue #5385: Fixed mmap crash after resize failure on windows.

  Now uses NULL instead of INVALID_HANDLE_VALUE as invalid map handle
  because CreateFileMapping returns NULL when error occurs.
........
This commit is contained in:
Hirokazu Yamamoto 2009-03-05 14:33:01 +00:00
parent 9a8082f107
commit 8e722bcf85
3 changed files with 48 additions and 7 deletions

View file

@ -509,6 +509,7 @@ class MmapTests(unittest.TestCase):
data1 = b"0123456789"
data2 = b"abcdefghij"
assert len(data1) == len(data2)
# Test same tag
m1 = mmap.mmap(-1, len(data1), tagname="foo")
m1[:] = data1
@ -516,6 +517,9 @@ class MmapTests(unittest.TestCase):
m2[:] = data2
self.assertEquals(m1[:], data2)
self.assertEquals(m2[:], data2)
m2.close()
m1.close()
# Test differnt tag
m1 = mmap.mmap(-1, len(data1), tagname="foo")
m1[:] = data1
@ -523,14 +527,42 @@ class MmapTests(unittest.TestCase):
m2[:] = data2
self.assertEquals(m1[:], data1)
self.assertEquals(m2[:], data2)
m2.close()
m1.close()
def test_tagname_crash(self):
def test_crasher_on_windows(self):
# Should not crash (Issue 1733986)
m = mmap.mmap(-1, 1000, tagname="foo")
try:
mmap.mmap(-1, 5000, tagname="foo")[:] # same tagname, but larger size
except:
pass
m.close()
# Should not crash (Issue 5385)
m = mmap.mmap(-1, 1000)
try:
m.resize(0)
except:
pass
try:
m[:]
except:
pass
m.close()
m1 = mmap.mmap(-1, 1000)
m2 = mmap.mmap(-1, 1000)
try:
m2.resize(5000)
except:
pass
try:
m2[:]
except:
pass
m2.close()
m1.close()
def test_main():