luaa: fix luaA_getopt_*

We let an element on the stack, that's bad.

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2009-04-09 12:47:19 +02:00
parent 2a6d5d207d
commit e24df900bb
1 changed files with 9 additions and 3 deletions

12
luaa.h
View File

@ -195,21 +195,27 @@ static inline lua_Number
luaA_getopt_number(lua_State *L, int idx, const char *name, lua_Number def) luaA_getopt_number(lua_State *L, int idx, const char *name, lua_Number def)
{ {
lua_getfield(L, idx, name); lua_getfield(L, idx, name);
return luaL_optnumber(L, -1, def); lua_Number n = luaL_optnumber(L, -1, def);
lua_pop(L, 1);
return n;
} }
static inline const char * static inline const char *
luaA_getopt_lstring(lua_State *L, int idx, const char *name, const char *def, size_t *len) luaA_getopt_lstring(lua_State *L, int idx, const char *name, const char *def, size_t *len)
{ {
lua_getfield(L, idx, name); lua_getfield(L, idx, name);
return luaL_optlstring(L, -1, def, len); const char *s = luaL_optlstring(L, -1, def, len);
lua_pop(L, 1);
return s;
} }
static inline bool static inline bool
luaA_getopt_boolean(lua_State *L, int idx, const char *name, bool def) luaA_getopt_boolean(lua_State *L, int idx, const char *name, bool def)
{ {
lua_getfield(L, idx, name); lua_getfield(L, idx, name);
return luaA_optboolean(L, -1, def); bool b = luaA_optboolean(L, -1, def);
lua_pop(L, 1);
return b;
} }
static inline int static inline int