diff options
Diffstat (limited to 'Python/frozenmain.c')
-rw-r--r-- | Python/frozenmain.c | 74 |
1 files changed, 7 insertions, 67 deletions
diff --git a/Python/frozenmain.c b/Python/frozenmain.c index 7f9cc19..e742172 100644 --- a/Python/frozenmain.c +++ b/Python/frozenmain.c @@ -2,8 +2,6 @@ /* Python interpreter main program for frozen scripts */ #include "Python.h" -#include "pycore_pystate.h" -#include <locale.h> #ifdef MS_WINDOWS extern void PyWinFreeze_ExeInit(void); @@ -16,32 +14,12 @@ extern int PyInitFrozenExtensions(void); int Py_FrozenMain(int argc, char **argv) { - PyStatus status = _PyRuntime_Initialize(); - if (PyStatus_Exception(status)) { - Py_ExitStatusException(status); - } - - const char *p; - int i, n, sts = 1; + char *p; + int n, sts; int inspect = 0; int unbuffered = 0; - char *oldloc = NULL; - wchar_t **argv_copy = NULL; - /* We need a second copies, as Python might modify the first one. */ - wchar_t **argv_copy2 = NULL; - - if (argc > 0) { - argv_copy = PyMem_RawMalloc(sizeof(wchar_t*) * argc); - argv_copy2 = PyMem_RawMalloc(sizeof(wchar_t*) * argc); - if (!argv_copy || !argv_copy2) { - fprintf(stderr, "out of memory\n"); - goto error; - } - } - PyConfig config; - PyConfig_InitPythonConfig(&config); - config.pathconfig_warnings = 0; /* Suppress errors from getpath.c */ + Py_FrozenFlag = 1; /* Suppress errors from getpath.c */ if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') inspect = 1; @@ -54,39 +32,12 @@ Py_FrozenMain(int argc, char **argv) setbuf(stderr, (char *)NULL); } - oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL)); - if (!oldloc) { - fprintf(stderr, "out of memory\n"); - goto error; - } - - setlocale(LC_ALL, ""); - for (i = 0; i < argc; i++) { - argv_copy[i] = Py_DecodeLocale(argv[i], NULL); - argv_copy2[i] = argv_copy[i]; - if (!argv_copy[i]) { - fprintf(stderr, "Unable to decode the command line argument #%i\n", - i + 1); - argc = i; - goto error; - } - } - setlocale(LC_ALL, oldloc); - PyMem_RawFree(oldloc); - oldloc = NULL; - #ifdef MS_WINDOWS PyInitFrozenExtensions(); #endif /* MS_WINDOWS */ if (argc >= 1) - Py_SetProgramName(argv_copy[0]); - - status = Py_InitializeFromConfig(&config); - PyConfig_Clear(&config); - if (PyStatus_Exception(status)) { - Py_ExitStatusException(status); - } - + Py_SetProgramName(argv[0]); + Py_Initialize(); #ifdef MS_WINDOWS PyWinFreeze_ExeInit(); #endif @@ -95,7 +46,7 @@ Py_FrozenMain(int argc, char **argv) fprintf(stderr, "Python %s\n%s\n", Py_GetVersion(), Py_GetCopyright()); - PySys_SetArgv(argc, argv_copy); + PySys_SetArgv(argc, argv); n = PyImport_ImportFrozenModule("__main__"); if (n == 0) @@ -113,17 +64,6 @@ Py_FrozenMain(int argc, char **argv) #ifdef MS_WINDOWS PyWinFreeze_ExeTerm(); #endif - if (Py_FinalizeEx() < 0) { - sts = 120; - } - -error: - PyMem_RawFree(argv_copy); - if (argv_copy2) { - for (i = 0; i < argc; i++) - PyMem_RawFree(argv_copy2[i]); - PyMem_RawFree(argv_copy2); - } - PyMem_RawFree(oldloc); + Py_Finalize(); return sts; } |