From: Martin v. Löwis Date: Mon, 3 Apr 2006 23:01:24 +0000 (+0000) Subject: Properly support empty woperation in win32_startfile; X-Git-Tag: v2.5a1~33 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5fe715f049fa58166a07c677a9c68804a91392eb;p=python Properly support empty woperation in win32_startfile; correct arguments to ShellExecuteW. --- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index db6f673b92..84e46375f0 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -7469,28 +7469,31 @@ win32_startfile(PyObject *self, PyObject *args) HINSTANCE rc; #ifdef Py_WIN_WIDE_FILENAMES if (unicode_file_names()) { - PyObject *unipath, *woperation; + PyObject *unipath, *woperation = NULL; if (!PyArg_ParseTuple(args, "U|s:startfile", &unipath, &operation)) { PyErr_Clear(); goto normal; } - woperation = PyUnicode_DecodeASCII(operation, - strlen(operation), NULL); - if (!woperation) { - PyErr_Clear(); - goto normal; + + if (operation) { + woperation = PyUnicode_DecodeASCII(operation, + strlen(operation), NULL); + if (!woperation) { + PyErr_Clear(); + operation = NULL; + goto normal; + } } Py_BEGIN_ALLOW_THREADS - rc = ShellExecuteW((HWND)0, operation, + rc = ShellExecuteW((HWND)0, woperation ? PyUnicode_AS_UNICODE(woperation) : 0, PyUnicode_AS_UNICODE(unipath), - PyUnicode_AS_UNICODE(woperation), NULL, NULL, SW_SHOWNORMAL); Py_END_ALLOW_THREADS - Py_DECREF(woperation); + Py_XDECREF(woperation); if (rc <= (HINSTANCE)32) { PyObject *errval = win32_error_unicode("startfile", PyUnicode_AS_UNICODE(unipath));