diff options
Diffstat (limited to 'Python/dynload_win.c')
| -rw-r--r-- | Python/dynload_win.c | 28 | 
1 files changed, 21 insertions, 7 deletions
| diff --git a/Python/dynload_win.c b/Python/dynload_win.c index ffcf0ee..f2c796e 100644 --- a/Python/dynload_win.c +++ b/Python/dynload_win.c @@ -9,6 +9,7 @@  #include <ctype.h>  #include "importdl.h" +#include "patchlevel.h"  #include <windows.h>  // "activation context" magic - see dl_nt.c... @@ -17,16 +18,28 @@ extern ULONG_PTR _Py_ActivateActCtx();  void _Py_DeactivateActCtx(ULONG_PTR cookie);  #endif -const char *_PyImport_DynLoadFiletab[] = {  #ifdef _DEBUG -    "_d.pyd", +#define PYD_DEBUG_SUFFIX "_d" +#else +#define PYD_DEBUG_SUFFIX "" +#endif + +#define STRINGIZE2(x) #x +#define STRINGIZE(x) STRINGIZE2(x) +#ifdef PYD_PLATFORM_TAG +#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd"  #else -    ".pyd", +#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) ".pyd"  #endif + +#define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd" + +const char *_PyImport_DynLoadFiletab[] = { +    PYD_TAGGED_SUFFIX, +    PYD_UNTAGGED_SUFFIX,      NULL  }; -  /* Case insensitive string compare, to avoid any dependencies on particular     C RTL implementations */ @@ -173,8 +186,9 @@ static char *GetPythonImport (HINSTANCE hModule)      return NULL;  } -dl_funcptr _PyImport_GetDynLoadWindows(const char *shortname, -                                       PyObject *pathname, FILE *fp) +dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix, +                                              const char *shortname, +                                              PyObject *pathname, FILE *fp)  {      dl_funcptr p;      char funcname[258], *import_python; @@ -188,7 +202,7 @@ dl_funcptr _PyImport_GetDynLoadWindows(const char *shortname,      if (wpathname == NULL)          return NULL; -    PyOS_snprintf(funcname, sizeof(funcname), "PyInit_%.200s", shortname); +    PyOS_snprintf(funcname, sizeof(funcname), "%.20s_%.200s", prefix, shortname);      {          HINSTANCE hDLL = NULL; | 
