mirror of
https://github.com/python/cpython.git
synced 2025-07-19 09:15:34 +00:00
Merged revisions 69038 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r69038 | mark.hammond | 2009-01-28 10:12:23 +1100 (Wed, 28 Jan 2009) | 3 lines On Windows, use the Python 'Activation Context' when loading extensions to avoid problems loading the CRT from a private assembly. Via bug 4566. ........
This commit is contained in:
parent
4fcc4cf185
commit
9844a1ffc3
2 changed files with 76 additions and 2 deletions
|
@ -11,6 +11,10 @@
|
|||
#include "importdl.h"
|
||||
#include <windows.h>
|
||||
|
||||
// "activation context" magic - see dl_nt.c...
|
||||
extern ULONG_PTR _Py_ActivateActCtx();
|
||||
void _Py_DeactivateActCtx(ULONG_PTR cookie);
|
||||
|
||||
const struct filedescr _PyImport_DynLoadFiletab[] = {
|
||||
#ifdef _DEBUG
|
||||
{"_d.pyd", "rb", C_EXTENSION},
|
||||
|
@ -172,6 +176,7 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
|
|||
char pathbuf[260];
|
||||
LPTSTR dummy;
|
||||
unsigned int old_mode;
|
||||
ULONG_PTR cookie = 0;
|
||||
/* We use LoadLibraryEx so Windows looks for dependent DLLs
|
||||
in directory of pathname first. However, Windows95
|
||||
can sometimes not work correctly unless the absolute
|
||||
|
@ -184,10 +189,13 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
|
|||
if (GetFullPathName(pathname,
|
||||
sizeof(pathbuf),
|
||||
pathbuf,
|
||||
&dummy))
|
||||
&dummy)) {
|
||||
ULONG_PTR cookie = _Py_ActivateActCtx();
|
||||
/* XXX This call doesn't exist in Windows CE */
|
||||
hDLL = LoadLibraryEx(pathname, NULL,
|
||||
LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
_Py_DeactivateActCtx(cookie);
|
||||
}
|
||||
|
||||
/* restore old error mode settings */
|
||||
SetErrorMode(old_mode);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue