mirror of
https://github.com/python/cpython.git
synced 2025-10-14 02:43:49 +00:00
Windows-specific hack to make sure that when LoadLibrary() is called,
the filename contains at least a rudimentary pathname. (The bad part is that we need to call getcwd() because only a prefix of ".\\" is not enough -- we prefix the drive letter.)
This commit is contained in:
parent
0ef577b966
commit
a5e1b008a9
1 changed files with 22 additions and 0 deletions
|
@ -104,6 +104,7 @@ typedef int (* APIENTRY dl_funcptr)();
|
|||
#ifdef MS_WINDOWS /* i.e. MS_WIN32 or MS_WIN16 */
|
||||
#define DYNAMIC_LINK
|
||||
#include <windows.h>
|
||||
#include <direct.h>
|
||||
typedef FARPROC dl_funcptr;
|
||||
#define _DL_FUNCPTR_DEFINED
|
||||
#ifdef _DEBUG
|
||||
|
@ -419,6 +420,19 @@ _PyImport_LoadDynamicModule(name, pathname, fp)
|
|||
#ifdef MS_WIN32
|
||||
{
|
||||
HINSTANCE hDLL;
|
||||
char pathbuf[260];
|
||||
if (strchr(pathname, SEP) == NULL &&
|
||||
strchr(pathname, ALTSEP) == NULL)
|
||||
{
|
||||
/* Prefix bare filename with ".\" */
|
||||
char *p = pathbuf;
|
||||
*p = '\0';
|
||||
_getcwd(pathbuf, sizeof pathbuf);
|
||||
if (*p != '\0' && p[1] == ':')
|
||||
p += 2;
|
||||
sprintf(p, ".\\%-.255s", pathname);
|
||||
pathname = pathbuf;
|
||||
}
|
||||
hDLL = LoadLibrary(pathname);
|
||||
if (hDLL==NULL){
|
||||
char errBuf[256];
|
||||
|
@ -471,6 +485,14 @@ _PyImport_LoadDynamicModule(name, pathname, fp)
|
|||
#ifdef MS_WIN16
|
||||
{
|
||||
HINSTANCE hDLL;
|
||||
char pathbuf[16];
|
||||
if (strchr(pathname, SEP) == NULL &&
|
||||
strchr(pathname, ALTSEP) == NULL)
|
||||
{
|
||||
/* Prefix bare filename with ".\" */
|
||||
sprintf(pathbuf, ".\\%-.13s", pathname);
|
||||
pathname = pathbuf;
|
||||
}
|
||||
hDLL = LoadLibrary(pathname);
|
||||
if (hDLL < HINSTANCE_ERROR){
|
||||
char errBuf[256];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue