Issue #3696: Error parsing arguments on OpenBSD <= 4.4 and Cygwin.

Patch by Amaury Forgeot d'Arc, reviewed by me.
This commit is contained in:
Antoine Pitrou 2008-09-03 18:58:51 +00:00
parent 658fad8aae
commit fff953048f
7 changed files with 128 additions and 3 deletions

View file

@ -45,7 +45,12 @@ Py_FrozenMain(int argc, char **argv)
oldloc = setlocale(LC_ALL, NULL);
setlocale(LC_ALL, "");
for (i = 0; i < argc; i++) {
#ifdef HAVE_BROKEN_MBSTOWCS
size_t argsize = strlen(argv[i]);
#else
size_t argsize = mbstowcs(NULL, argv[i], 0);
#endif
size_t count;
if (argsize == (size_t)-1) {
fprintf(stderr, "Could not convert argument %d to string", i);
return 1;
@ -56,7 +61,11 @@ Py_FrozenMain(int argc, char **argv)
fprintf(stderr, "out of memory");
return 1;
}
mbstowcs(argv_copy[i], argv[i], argsize+1);
count = mbstowcs(argv_copy[i], argv[i], argsize+1);
if (count == (size_t)-1) {
fprintf(stderr, "Could not convert argument %d to string", i);
return 1;
}
}
setlocale(LC_ALL, oldloc);