From d67332dc19fc59ccdcf3ea96b92056164f66e4d2 Mon Sep 17 00:00:00 2001 From: "U-Khasa\\Vitor" Date: Mon, 20 Jul 2009 20:55:22 -0700 Subject: [PATCH] Improve error handling when loading DLLs --- C/load_dll.c | 15 ++++++++++----- C/load_foreign.c | 0 2 files changed, 10 insertions(+), 5 deletions(-) mode change 100644 => 100755 C/load_dll.c mode change 100644 => 100755 C/load_foreign.c diff --git a/C/load_dll.c b/C/load_dll.c old mode 100644 new mode 100755 index e25776d59..534e2e8cb --- a/C/load_dll.c +++ b/C/load_dll.c @@ -47,13 +47,18 @@ LoadForeign(StringList ofiles, StringList libs, if (Yap_TrueFileName(ofiles->s, Yap_FileNameBuf, TRUE) && (handle=LoadLibrary(Yap_FileNameBuf)) != 0) - { - if (*init_proc == NULL) - *init_proc = (YapInitProc)GetProcAddress((HMODULE)handle, proc_name); - } + { + Yap_ErrorSay[0]=~'\0'; + if (*init_proc == NULL) + *init_proc = (YapInitProc)GetProcAddress((HMODULE)handle, proc_name); + } else { + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Yap_ErrorSay, 256, + NULL); + } ofiles = ofiles->next; } - /* load libraries first so that their symbols are available to other routines */ while (libs) { diff --git a/C/load_foreign.c b/C/load_foreign.c old mode 100644 new mode 100755