[Python-checkins] r60221 - in python/trunk: Misc/NEWS Python/dynload_win.c

christian.heimes python-checkins at python.org
Wed Jan 23 18:15:06 CET 2008


Author: christian.heimes
Date: Wed Jan 23 18:15:06 2008
New Revision: 60221
Modified:
 python/trunk/Misc/NEWS
 python/trunk/Python/dynload_win.c
Log:
Applied #1069410
The "can't load dll" message box on Windows is suppressed while an extension is loaded by calling SetErrorMode in dynload_win.c. The error is still reported properly.
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Wed Jan 23 18:15:06 2008
@@ -12,6 +12,10 @@
 Core and builtins
 -----------------
 
+- Issue #1069410: The "can't load dll" message box on Windows is 
+ suppressed while an extension is loaded by calling SetErrorMode in
+ dynload_win.c. The error is still reported properly.
+
 - Bug #1915: Python compiles with --enable-unicode=no again. However
 several extension methods and modules do not work without unicode
 support.
Modified: python/trunk/Python/dynload_win.c
==============================================================================
--- python/trunk/Python/dynload_win.c	(original)
+++ python/trunk/Python/dynload_win.c	Wed Jan 23 18:15:06 2008
@@ -171,11 +171,16 @@
 		HINSTANCE hDLL = NULL;
 		char pathbuf[260];
 		LPTSTR dummy;
+		unsigned int old_mode;
 		/* We use LoadLibraryEx so Windows looks for dependent DLLs 
 		 in directory of pathname first. However, Windows95
 		 can sometimes not work correctly unless the absolute
 		 path is used. If GetFullPathName() fails, the LoadLibrary
 		 will certainly fail too, so use its error code */
+
+		/* Don't display a message box when Python can't load a DLL */
+		old_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
+
 		if (GetFullPathName(pathname,
 				 sizeof(pathbuf),
 				 pathbuf,
@@ -183,6 +188,10 @@
 			/* XXX This call doesn't exist in Windows CE */
 			hDLL = LoadLibraryEx(pathname, NULL,
 					 LOAD_WITH_ALTERED_SEARCH_PATH);
+
+		/* restore old error mode settings */
+		SetErrorMode(old_mode);
+
 		if (hDLL==NULL){
 			char errBuf[256];
 			unsigned int errorCode;


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /