From d4df8d7825709872c779a11f53f12a00503bb948 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 15 Nov 2011 16:37:06 +0100 Subject: [PATCH] FFI: Save GetLastError() around ffi.load() and symbol resolving, too. --- src/lj_clib.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lj_clib.c b/src/lj_clib.c index ff576d35..9f69b969 100644 --- a/src/lj_clib.c +++ b/src/lj_clib.c @@ -169,7 +169,9 @@ static const char *clib_extname(lua_State *L, const char *name) static void *clib_loadlib(lua_State *L, const char *name, int global) { + DWORD oldwerr = GetLastError(); void *h = (void *)LoadLibraryA(clib_extname(L, name)); + SetLastError(oldwerr); if (!h) clib_error(L, "cannot load module " LUA_QS ": %s", name); UNUSED(global); return h; @@ -194,6 +196,7 @@ static void clib_unloadlib(CLibrary *cl) static void *clib_getsym(CLibrary *cl, const char *name) { void *p = NULL; + DWORD oldwerr = GetLastError(); if (cl->handle == CLIB_DEFHANDLE) { /* Search default libraries. */ MSize i; for (i = 0; i < CLIB_HANDLE_MAX; i++) { @@ -222,6 +225,7 @@ static void *clib_getsym(CLibrary *cl, const char *name) } else { p = (void *)GetProcAddress((HINSTANCE)cl->handle, name); } + SetLastError(oldwerr); return p; }