Use correct function name to PyArg_ParseTuple("is_package").
Fix off-by-1 error in normalize_line_endings():
when *p == '\0' the NUL was copied into q and q was auto-incremented,
the loop was broken out of,
then a newline was appended followed by a NUL.
So the function, in effect, was strcpy() but added two extra chars
which was caught by obmalloc in debug mode, since there was only
room for 1 additional newline.
Get test working under regrtest (added test_main).
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 159a6b0..4c796f3 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -371,7 +371,7 @@
char *fullname;
enum module_info mi;
- if (!PyArg_ParseTuple(args, "s:zipimporter.find_module",
+ if (!PyArg_ParseTuple(args, "s:zipimporter.is_package",
&fullname))
return NULL;
@@ -947,7 +947,7 @@
return NULL;
}
/* replace "\r\n?" by "\n" */
- for (q = buf;;) {
+ for (q = buf; *p != '\0'; p++) {
if (*p == '\r') {
*q++ = '\n';
if (*(p + 1) == '\n')
@@ -955,9 +955,6 @@
}
else
*q++ = *p;
- if (*p == '\0')
- break;
- p++;
}
*q++ = '\n'; /* add trailing \n */
*q = '\0';