]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
backport tim_one's checkin of
authorMichael W. Hudson <mwh@python.net>
Fri, 8 Mar 2002 13:39:25 +0000 (13:39 +0000)
committerMichael W. Hudson <mwh@python.net>
Fri, 8 Mar 2002 13:39:25 +0000 (13:39 +0000)
    revision 1.20 of test_mmap.py

SF bug 515943:  searching for data with \0 in mmap.
mmap_find_method():  this obtained the string to find via s#, but it
ignored its length, acting as if it were \0-terminated instead.

Someone please run on Linux too (the extended test_mmap works on Windows).

Bugfix candidate.

Lib/test/test_mmap.py

index f3d1538f7efdb8565ef33e988ea039db42de894d..0f34758925e570c5714931e7ae5f43317e6fff57 100644 (file)
@@ -244,6 +244,31 @@ def test_both():
         except OSError:
             pass
 
+    # Do a tougher .find() test.  SF bug 515943 pointed out that, in 2.2,
+    # searching for data with embedded \0 bytes didn't work.
+    f = open(TESTFN, 'w+')
+
+    try:    # unlink TESTFN no matter what
+        data = 'aabaac\x00deef\x00\x00aa\x00'
+        n = len(data)
+        f.write(data)
+        m = mmap.mmap(f.fileno(), n)
+        f.close()
+
+        for start in range(n+1):
+            for finish in range(start, n+1):
+                slice = data[start : finish]
+                vereq(m.find(slice), data.find(slice))
+                vereq(m.find(slice + 'x'), -1)
+
+    finally:
+        try:
+            os.unlink(TESTFN)
+        except OSError:
+            pass
+
+
+
     print ' Test passed'
 
 test_both()