]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Py_FrozenMain() now uses _Py_char2wchar() to decode command line arguments, as
authorVictor Stinner <victor.stinner@gmail.com>
Sat, 27 Jul 2013 00:24:52 +0000 (02:24 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Sat, 27 Jul 2013 00:24:52 +0000 (02:24 +0200)
done in main()

Python/frozenmain.c

index 3b64a6a884d7f32347b501af201bb65c1f96e147..f628ddc846cffe6791892f3586a473e76deba234 100644 (file)
@@ -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);