diff options
author | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> | 2009-03-05 14:21:12 +0000 |
---|---|---|
committer | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> | 2009-03-05 14:21:12 +0000 |
commit | 264fc12fbff471d137f61e5fd7152f5a7df9eb6c (patch) | |
tree | 4b8c2c1496a7b81bcee8245000c3f3f7af914478 /Lib/test/test_mmap.py | |
parent | a3e6c9763c475a93ab5fab0a42b2b3718e196d93 (diff) | |
download | cpython-git-264fc12fbff471d137f61e5fd7152f5a7df9eb6c.tar.gz |
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.
Diffstat (limited to 'Lib/test/test_mmap.py')
-rw-r--r-- | Lib/test/test_mmap.py | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index 1ad611d45c..bed5d2bcaa 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -504,6 +504,7 @@ class MmapTests(unittest.TestCase): data1 = "0123456789" data2 = "abcdefghij" assert len(data1) == len(data2) + # Test same tag m1 = mmap.mmap(-1, len(data1), tagname="foo") m1[:] = data1 @@ -511,6 +512,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 @@ -518,14 +522,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(): |