aboutsummaryrefslogtreecommitdiff
path: root/src/lib_package.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib_package.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/lib_package.c b/src/lib_package.c
index 1d9fef3d..8c336b02 100644
--- a/src/lib_package.c
+++ b/src/lib_package.c
@@ -96,9 +96,17 @@ static void setprogdir(lua_State *L)
96static void pusherror(lua_State *L) 96static void pusherror(lua_State *L)
97{ 97{
98 DWORD error = GetLastError(); 98 DWORD error = GetLastError();
99#if LJ_TARGET_XBOXONE
100 wchar_t wbuffer[128];
101 char buffer[128*2];
102 if (FormatMessageW(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
103 NULL, error, 0, wbuffer, sizeof(wbuffer)/sizeof(wchar_t), NULL) &&
104 WideCharToMultiByte(CP_ACP, 0, wbuffer, 128, buffer, 128*2, NULL, NULL))
105#else
99 char buffer[128]; 106 char buffer[128];
100 if (FormatMessageA(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, 107 if (FormatMessageA(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
101 NULL, error, 0, buffer, sizeof(buffer), NULL)) 108 NULL, error, 0, buffer, sizeof(buffer), NULL))
109#endif
102 lua_pushstring(L, buffer); 110 lua_pushstring(L, buffer);
103 else 111 else
104 lua_pushfstring(L, "system error %d\n", error); 112 lua_pushfstring(L, "system error %d\n", error);
@@ -111,7 +119,7 @@ static void ll_unloadlib(void *lib)
111 119
112static void *ll_load(lua_State *L, const char *path, int gl) 120static void *ll_load(lua_State *L, const char *path, int gl)
113{ 121{
114 HINSTANCE lib = LoadLibraryA(path); 122 HINSTANCE lib = LoadLibraryExA(path, NULL, 0);
115 if (lib == NULL) pusherror(L); 123 if (lib == NULL) pusherror(L);
116 UNUSED(gl); 124 UNUSED(gl);
117 return lib; 125 return lib;
@@ -226,7 +234,7 @@ static int ll_loadfunc(lua_State *L, const char *path, const char *name, int r)
226 const char *bcdata = ll_bcsym(*reg, mksymname(L, name, SYMPREFIX_BC)); 234 const char *bcdata = ll_bcsym(*reg, mksymname(L, name, SYMPREFIX_BC));
227 lua_pop(L, 1); 235 lua_pop(L, 1);
228 if (bcdata) { 236 if (bcdata) {
229 if (luaL_loadbuffer(L, bcdata, ~(size_t)0, name) != 0) 237 if (luaL_loadbuffer(L, bcdata, LJ_MAX_BUF, name) != 0)
230 return PACKAGE_ERR_LOAD; 238 return PACKAGE_ERR_LOAD;
231 return 0; 239 return 0;
232 } 240 }
@@ -383,7 +391,7 @@ static int lj_cf_package_loader_preload(lua_State *L)
383 if (lua_isnil(L, -1)) { /* Not found? */ 391 if (lua_isnil(L, -1)) { /* Not found? */
384 const char *bcname = mksymname(L, name, SYMPREFIX_BC); 392 const char *bcname = mksymname(L, name, SYMPREFIX_BC);
385 const char *bcdata = ll_bcsym(NULL, bcname); 393 const char *bcdata = ll_bcsym(NULL, bcname);
386 if (bcdata == NULL || luaL_loadbuffer(L, bcdata, ~(size_t)0, name) != 0) 394 if (bcdata == NULL || luaL_loadbuffer(L, bcdata, LJ_MAX_BUF, name) != 0)
387 lua_pushfstring(L, "\n\tno field package.preload['%s']", name); 395 lua_pushfstring(L, "\n\tno field package.preload['%s']", name);
388 } 396 }
389 return 1; 397 return 1;