diff --git a/w32api/ex.c b/w32api/ex.c index ec37f67..581eff0 100755 --- a/w32api/ex.c +++ b/w32api/ex.c @@ -30,11 +30,10 @@ static int ex_getenv(lua_State *L) { const char *nam = luaL_checkstring(L, 1); - char sval[256], *val = sval; - size_t len = GetEnvironmentVariable(nam, val, sizeof sval); - if (sizeof sval < len) { - len = GetEnvironmentVariable(nam, val = lua_newuserdata(len), len); - } + char sval[256], *val; + size_t len = GetEnvironmentVariable(nam, val = sval, sizeof sval); + if (sizeof sval < len) + len = GetEnvironmentVariable(nam, val = lua_newuserdata(L, len), len); if (len == 0) return push_error(L); lua_pushlstring(L, val, len); @@ -305,14 +304,16 @@ static int ex_dir(lua_State *L) /*NOTREACHED*/ } +static const ULARGE_INTEGER zero_len; +static const OVERLAPPED zero_ov; static int file_lock(lua_State *L, FILE *f, const char *mode, long offset, long length) { HANDLE h = file_handle(f); DWORD flags; - ULARGE_INTEGER len = {0}; - OVERLAPPED ov = {0}; + ULARGE_INTEGER len = zero_len; + OVERLAPPED ov = zero_ov; BOOL ret; if (length) len.LowPart = length; else len.LowPart = GetFileSize(h, &len.HighPart);