diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib_package.c | 14 |
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) | |||
96 | static void pusherror(lua_State *L) | 96 | static 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 | ||
112 | static void *ll_load(lua_State *L, const char *path, int gl) | 120 | static 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; |