lua: restore return value of require('uci') to module table.
authorYousong Zhou <yszhou4tech@gmail.com>
Wed, 18 Mar 2015 04:44:45 +0000 (12:44 +0800)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 26 Mar 2015 20:38:14 +0000 (21:38 +0100)
Before commit "b121dd lua: add lua 5.2 compatibility changes", the
module table was filled by luaL_register() which would leave the table
at the top of the stack.  But in current code the module table will be
popped by lua_setglobal() causing the return value defaulting to boolean
value true.

Also fix the return value of luaopen_uci() to 1 to indicate the number
of return value on stack.

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
lua/uci.c

index 8ace746eabf0dc22f751154e2b08b634b47b8d66..6ba7da07f9e8793f2b1e54ddda6ff60c120a55fe 100644 (file)
--- a/lua/uci.c
+++ b/lua/uci.c
@@ -994,8 +994,9 @@ luaopen_uci(lua_State *L)
 
        /* create module */
        lua_newtable(L);
+       lua_pushvalue(L, -1);
        luaL_setfuncs(L, uci, 0);
        lua_setglobal(L, MODNAME);
 
-       return 0;
+       return 1;
 }