From: Michael W. Hudson Date: Fri, 8 Mar 2002 13:40:07 +0000 (+0000) Subject: backport tim_one's checkin of X-Git-Tag: v2.2.1c1~95 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=85717c768a2920ae15a39879cb676fe9f5c25f87;p=thirdparty%2FPython%2Fcpython.git backport tim_one's checkin of 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. --- diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 6e03b4b59dc6..5bad8e45afe8 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -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 ((sdata + 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); }