Mercurial > cpython-lru_cache-weakref
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); }
