From 5fe715f049fa58166a07c677a9c68804a91392eb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Mon, 3 Apr 2006 23:01:24 +0000 Subject: [PATCH] Properly support empty woperation in win32_startfile; correct arguments to ShellExecuteW. --- Modules/posixmodule.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) 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)); -- 2.40.0