Py_FrozenMain() now uses _Py_char2wchar() to decode command line arguments, as
done in main()
This commit is contained in:
parent
b5245bec93
commit
739cf4e3e6
|
@ -52,27 +52,13 @@ 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\n", i);
|
||||
return 1;
|
||||
}
|
||||
argv_copy[i] = PyMem_RawMalloc((argsize+1)*sizeof(wchar_t));
|
||||
argv_copy2[i] = argv_copy[i];
|
||||
argv_copy[i] = _Py_char2wchar(argv[i], NULL);
|
||||
if (!argv_copy[i]) {
|
||||
fprintf(stderr, "out of memory\n");
|
||||
return 1;
|
||||
}
|
||||
count = mbstowcs(argv_copy[i], argv[i], argsize+1);
|
||||
if (count == (size_t)-1) {
|
||||
fprintf(stderr, "Could not convert argument %d to string\n", i);
|
||||
fprintf(stderr, "Unable to decode the command line argument #%i\n",
|
||||
i + 1);
|
||||
return 1;
|
||||
}
|
||||
argv_copy2[i] = argv_copy[i];
|
||||
}
|
||||
setlocale(LC_ALL, oldloc);
|
||||
|
||||
|
|
Loading…
Reference in New Issue