Mercurial > cpython-lru_cache-weakref
diff Python/dynload_win.c @ 44891:005921fcff43 legacy-trunk
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.
| author | Christian Heimes <christian@cheimes.de> |
|---|---|
| date | Wed, 23 Jan 2008 17:15:06 +0000 |
| parents | 76a89dd4a512 |
| children | 1434d1bc667f |
line wrap: on
line diff
--- a/Python/dynload_win.c Wed Jan 23 14:20:50 2008 +0000 +++ b/Python/dynload_win.c Wed Jan 23 17:15:06 2008 +0000 @@ -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;
