From: Michael W. Hudson Date: Fri, 8 Mar 2002 13:39:25 +0000 (+0000) Subject: backport tim_one's checkin of X-Git-Tag: v2.2.1c1~96 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=db1752660157323a7c88a507a754726898eb1b97;p=thirdparty%2FPython%2Fcpython.git backport tim_one's checkin of 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. --- diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index f3d1538f7efd..0f34758925e5 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -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()