diff Modules/mmapmodule.c @ 22177:ee33bbaf3381 legacy-trunk

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.
author Tim Peters <tim.peters@gmail.com>
date Fri, 08 Mar 2002 05:43:32 +0000
parents 40631ae74b17
children 8142f8d668a0
line wrap: on
line diff
--- a/Modules/mmapmodule.c	Fri Mar 08 03:18:19 2002 +0000
+++ b/Modules/mmapmodule.c	Fri Mar 08 05:43:32 2002 +0000
@@ -251,20 +251,16 @@
 			start = 0;
                 else if ((size_t)start > self->size)
 			start = self->size;
-                p = self->data + start;
 
-		while (p < e) {
-			char *s = p;
-			char *n = needle;
-			while ((s<e) && (*n) && !(*s-*n)) {
-				s++, n++;
-			}
-			if (!*n) {
+		for (p = self->data + start; p + len <= e; ++p) {
+			int i;
+			for (i = 0; i < len && needle[i] == p[i]; ++i)
+				/* nothing */;
+			if (i == len) {
 				return Py_BuildValue (
 					"l",
 					(long) (p - self->data));
 			}
-			p++;
 		}
 		return Py_BuildValue ("l", (long) -1);
 	}