From: Victor Stinner Date: Sat, 7 Aug 2010 10:57:17 +0000 (+0000) Subject: Issue #9425: Create run_command() subfunction X-Git-Tag: v3.2a2~440 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a62207c5847948b83d698b5fb4b2c1a03434a5a6;p=python Issue #9425: Create run_command() subfunction Use PyUnicode_AsUTF8String() instead of _PyUnicode_AsString() --- diff --git a/Modules/main.c b/Modules/main.c index 29f5fc82e6..bebaab556c 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -253,6 +253,28 @@ static int RunMainFromImporter(wchar_t *filename) } } +static int +run_command(wchar_t *command, PyCompilerFlags *cf) +{ + PyObject *unicode, *bytes; + int ret; + + unicode = PyUnicode_FromWideChar(command, -1); + if (unicode == NULL) + goto error; + bytes = PyUnicode_AsUTF8String(unicode); + Py_DECREF(unicode); + if (bytes == NULL) + goto error; + ret = PyRun_SimpleStringFlags(PyBytes_AsString(bytes), cf); + Py_DECREF(bytes); + return ret != 0; + +error: + PyErr_Print(); + return 1; +} + /* Main program */ @@ -564,22 +586,8 @@ Py_Main(int argc, wchar_t **argv) } if (command) { - char *commandStr; - PyObject *commandObj = PyUnicode_FromWideChar( - command, wcslen(command)); + sts = run_command(command, &cf); free(command); - if (commandObj != NULL) - commandStr = _PyUnicode_AsString(commandObj); - else - commandStr = NULL; - if (commandStr != NULL) { - sts = PyRun_SimpleStringFlags(commandStr, &cf) != 0; - Py_DECREF(commandObj); - } - else { - PyErr_Print(); - sts = 1; - } } else if (module) { sts = RunModule(module, 1); }