[Change] Balanced the Lua conf stack.

This commit is contained in:
Allanis 2014-01-03 01:13:05 +00:00
parent 73b034d1ec
commit 6575eace2b

View File

@ -19,30 +19,30 @@
lua_getglobal(L,n); \ lua_getglobal(L,n); \
if(lua_isnumber(L, -1)) { \ if(lua_isnumber(L, -1)) { \
i = (int)lua_tonumber(L, -1); \ i = (int)lua_tonumber(L, -1); \
} \
lua_remove(L, -1); \ lua_remove(L, -1); \
}
#define conf_loadFloat(n,f) \ #define conf_loadFloat(n,f) \
lua_getglobal(L,n); \ lua_getglobal(L,n); \
if(lua_isnumber(L, -1)) { \ if(lua_isnumber(L, -1)) { \
f = (double)lua_tonumber(L, -1); \ f = (double)lua_tonumber(L, -1); \
} \
lua_remove(L,-1);\ lua_remove(L,-1);\
}
#define conf_loadBool(n,b) \ #define conf_loadBool(n,b) \
lua_getglobal(L,n); \ lua_getglobal(L,n); \
if(lua_isnumber(L, -1)) \ if(lua_isnumber(L, -1)) \
if((int)lua_tonumber(L, -1) == 1) { \ if((int)lua_tonumber(L, -1) == 1) { \
b = 1; \ b = 1; \
lua_remove(L, -1); \
} \ } \
lua_remove(L, -1); \
#define conf_loadString(n,s) \ #define conf_loadString(n,s) \
lua_getglobal(L,n); \ lua_getglobal(L,n); \
if(lua_isstring(L, -1)) { \ if(lua_isstring(L, -1)) { \
s = strdup((char*)lua_tostring(L, -1)); \ s = strdup((char*)lua_tostring(L, -1)); \
} \
lua_remove(L, -1); \ lua_remove(L, -1); \
}
/* Some crap from main. */ /* Some crap from main. */
extern int nosound; extern int nosound;
@ -164,25 +164,30 @@ int conf_loadConfig(const char* file) {
lua_gettable(L, -2); lua_gettable(L, -2);
if(lua_isstring(L, -1)) if(lua_isstring(L, -1))
str = (char*)lua_tostring(L, -1); str = (char*)lua_tostring(L, -1);
lua_remove(L, -1);
/* Get the key. */ /* Get the key. */
lua_pushstring(L, "key"); lua_pushstring(L, "key");
lua_gettable(L, -3); lua_gettable(L, -2);
if(lua_isnumber(L, -1)) if(lua_isnumber(L, -1))
key = (int)lua_tonumber(L, -1); key = (int)lua_tonumber(L, -1);
lua_remove(L, -1);
/* Is it reversed? Only used for axis. */ /* Is it reversed? Only used for axis. */
lua_pushstring(L, "reverse"); lua_pushstring(L, "reverse");
lua_gettable(L, -4); lua_gettable(L, -2);
if(lua_isnumber(L, -1)) if(lua_isnumber(L, -1))
reverse = 1; reverse = 1;
lua_remove(L, -1);
lua_pushstring(L, "mod"); lua_pushstring(L, "mod");
lua_gettable(L, -4); lua_gettable(L, -2);
if(lua_isstring(L, -1)) if(lua_isstring(L, -1))
mod = (char*)lua_tostring(L, -1); mod = (char*)lua_tostring(L, -1);
lua_remove(L, -1);
if(key != -1 && str != NULL) {
if((key != -1) && (str != NULL)) {
/* Then the keybind is valid. Get the type. */ /* Then the keybind is valid. Get the type. */
if(strcmp(str, "null")==0) type = KEYBIND_NULL; if(strcmp(str, "null")==0) type = KEYBIND_NULL;
else if(strcmp(str, "keyboard")==0) type = KEYBIND_KEYBOARD; else if(strcmp(str, "keyboard")==0) type = KEYBIND_KEYBOARD;
@ -216,10 +221,8 @@ int conf_loadConfig(const char* file) {
/* Clean up after table crap. */ /* Clean up after table crap. */
lua_remove(L,-1); lua_remove(L,-1);
lua_remove(L,-1);
lua_remove(L,-1);
lua_remove(L,-1);
} }
lua_remove(L, -1);
} }
} else { } else {
/* Failed to load the config file.. */ /* Failed to load the config file.. */