From a62207c5847948b83d698b5fb4b2c1a03434a5a6 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sat, 7 Aug 2010 10:57:17 +0000 Subject: Issue #9425: Create run_command() subfunction Use PyUnicode_AsUTF8String() instead of _PyUnicode_AsString() --- Modules/main.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/Modules/main.c b/Modules/main.c index 29f5fc8..bebaab5 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); } -- cgit v0.12