[Python-checkins] r43611 - python/trunk/Modules/posixmodule.c

martin.v.loewis python-checkins at python.org
Tue Apr 4 01:01:26 CEST 2006


Author: martin.v.loewis
Date: Tue Apr  4 01:01:24 2006
New Revision: 43611

Modified:
   python/trunk/Modules/posixmodule.c
Log:
Properly support empty woperation in win32_startfile;
correct arguments to ShellExecuteW.

Modified: python/trunk/Modules/posixmodule.c
==============================================================================
--- python/trunk/Modules/posixmodule.c	(original)
+++ python/trunk/Modules/posixmodule.c	Tue Apr  4 01:01:24 2006
@@ -7469,28 +7469,31 @@
 	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));


More information about the Python-checkins mailing list