X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=lua%2Fuci.c;fp=lua%2Fuci.c;h=564948bc67ebd443cb7ad3fd6900af2307f200e2;hp=cc6f3704d47b2e9b3dcae196a0b117f5be2bd06e;hb=aac40e9b497b9de95c61c058a87a219592c272ad;hpb=16efed543212c44e1d8af01a2471801792c0a32d diff --git a/lua/uci.c b/lua/uci.c index cc6f370..564948b 100644 --- a/lua/uci.c +++ b/lua/uci.c @@ -724,11 +724,22 @@ uci_lua_add_change(lua_State *L, struct uci_element *e) lua_setfield(L, -3, name); } - /* a table is on the top of the stack so this is a subsequent, - * list_add, append this value to table */ - } else if (lua_istable(L, -1)) { - lua_pushstring(L, value); - lua_rawseti(L, -2, lua_objlen(L, -2) + 1); + /* there is a value already, append */ + } else { + /* a string is on top of the stack, coerce into table */ + if (lua_isstring(L, -1)) { + lua_newtable(L); + lua_pushvalue(L, -2); + lua_rawseti(L, -2, 1); + lua_setfield(L, -3, name); + } + + /* a table is on the top of the stack so this is a subsequent, + * list_add, append this value to table */ + if (lua_istable(L, -1)) { + lua_pushstring(L, value); + lua_rawseti(L, -2, lua_objlen(L, -2) + 1); + } } lua_pop(L, 1);