summaryrefslogtreecommitdiff
path: root/Python/importdl.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1998-06-27 21:53:17 +0000
committerGuido van Rossum <guido@python.org>1998-06-27 21:53:17 +0000
commitcf0f276586a2b05d0cd9375d184cd8dd6459e89e (patch)
tree72d13b42c820cc6684289ac3ae18da9e6021d8b3 /Python/importdl.c
parentabe2ad21536df91df0d97af3d2c15dab6a5e58d0 (diff)
downloadcpython-cf0f276586a2b05d0cd9375d184cd8dd6459e89e.tar.gz
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.)
Diffstat (limited to 'Python/importdl.c')
-rw-r--r--Python/importdl.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/Python/importdl.c b/Python/importdl.c
index fe025c0838..5d78bab885 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -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];