Add better error reporting for MemoryErrors caused by str->float conversions.
[python.git] / Python / dynload_os2.c
blobd660e27501ae5c39caac4c94ae631cb7a07debff
2 /* Support for dynamic loading of extension modules */
4 #define INCL_DOSERRORS
5 #define INCL_DOSMODULEMGR
6 #include <os2.h>
8 #include "Python.h"
9 #include "importdl.h"
12 const struct filedescr _PyImport_DynLoadFiletab[] = {
13 {".pyd", "rb", C_EXTENSION},
14 {".dll", "rb", C_EXTENSION},
15 {0, 0}
18 dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
19 const char *pathname, FILE *fp)
21 dl_funcptr p;
22 APIRET rc;
23 HMODULE hDLL;
24 char failreason[256];
25 char funcname[258];
27 rc = DosLoadModule(failreason,
28 sizeof(failreason),
29 pathname,
30 &hDLL);
32 if (rc != NO_ERROR) {
33 char errBuf[256];
34 PyOS_snprintf(errBuf, sizeof(errBuf),
35 "DLL load failed, rc = %d: %.200s",
36 rc, failreason);
37 PyErr_SetString(PyExc_ImportError, errBuf);
38 return NULL;
41 PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
42 rc = DosQueryProcAddr(hDLL, 0L, funcname, &p);
43 if (rc != NO_ERROR)
44 p = NULL; /* Signify Failure to Acquire Entrypoint */
45 return p;