Mercurial > cpython-lru_cache-weakref
diff Modules/main.c @ 63792:275acfcccccb
Issue #9425: Create run_command() subfunction
Use PyUnicode_AsUTF8String() instead of _PyUnicode_AsString()
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Sat, 07 Aug 2010 10:57:17 +0000 |
| parents | b7f71f60437b |
| children | 0ed665e8a115 |
line wrap: on
line diff
--- a/Modules/main.c Sat Aug 07 10:09:35 2010 +0000 +++ b/Modules/main.c Sat Aug 07 10:57:17 2010 +0000 @@ -253,6 +253,28 @@ } } +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 @@ } 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); }
