Skip to content

Commit

Permalink
ex_getenv() now supports arbitrarily-sized variables
Browse files Browse the repository at this point in the history
  • Loading branch information
mark committed Jan 31, 2006
1 parent 029c153 commit be8ad39
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions w32api/ex.c
Expand Up @@ -53,12 +53,16 @@ extern int push_error(lua_State *L)
static int ex_getenv(lua_State *L)
{
const char *nam = luaL_checkstring(L, 1);
char val[1024];
size_t len;
len = GetEnvironmentVariable(nam, val, sizeof val);
if (sizeof val < len || (len == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND))
char sval[256], *val = sval;
size_t len = GetEnvironmentVariable(nam, val, sizeof val);
if (sizeof sval < len) {
val = malloc(len);
len = GetEnvironmentVariable(nam, val, sizeof val);
}
if (len == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND)
return push_error(L);
lua_pushlstring(L, val, len);
if (val != sval) free(val);
return 1;
}

Expand Down

0 comments on commit be8ad39

Please sign in to comment.