Replace all uses of strncmp (in split, find, rfind) with memcmp, so
embedded \0 in the delimiter is handled properly. Thanks to Sjoerd
for suggesting this.
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index a70df8c..324859e 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -132,7 +132,7 @@
i = j = 0;
while (i+n <= len) {
- if (s[i] == sub[0] && (n == 1 || strncmp(s+i, sub, n) == 0)) {
+ if (s[i] == sub[0] && (n == 1 || memcmp(s+i, sub, n) == 0)) {
item = newsizedstringobject(s+j, (int)(i-j));
if (item == NULL)
goto fail;
@@ -261,7 +261,7 @@
len -= n;
for (; i <= len; ++i)
if (s[i] == sub[0] &&
- (n == 1 || strncmp(&s[i+1], &sub[1], n-1) == 0))
+ (n == 1 || memcmp(&s[i+1], &sub[1], n-1) == 0))
return newintobject((long)i);
return newintobject(-1L);
@@ -294,7 +294,7 @@
for (j = len-n; j >= i; --j)
if (s[j] == sub[0] &&
- (n == 1 || strncmp(&s[j+1], &sub[1], n-1) == 0))
+ (n == 1 || memcmp(&s[j+1], &sub[1], n-1) == 0))
return newintobject((long)j);
return newintobject(-1L);