Commit a5e1b008 authored by Guido van Rossum's avatar Guido van Rossum

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.)
parent 0ef577b9
......@@ -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];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment