]> 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:40:07 +0000 (13:40 +0000)
committerMichael W. Hudson <mwh@python.net>
Fri, 8 Mar 2002 13:40:07 +0000 (13:40 +0000)
    revision 2.38 of mmapmodule.c

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.

Modules/mmapmodule.c

index 6e03b4b59dc616a0a1751ba1a41ddda33c4625bc..5bad8e45afe84bdccca028ac732770451e08efed 100644 (file)
@@ -251,20 +251,16 @@ mmap_find_method(mmap_object *self,
                        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);
        }