X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=lua%2Fuci.c;h=638290076b391514610b14647f6caf3a9afb9443;hp=0667fc24a7b70ee35036d53ac84f1fccfcf7d802;hb=31d4b691d96af442e8dfcefbb7acf85a448bba5c;hpb=760c34c94a0ab21363626a0817757cdfdce53ffe diff --git a/lua/uci.c b/lua/uci.c index 0667fc2..6382900 100644 --- a/lua/uci.c +++ b/lua/uci.c @@ -364,6 +364,8 @@ uci_lua_get_any(lua_State *L, bool all) err = UCI_ERR_INVAL; goto error; } + if (s) + free(s); if (!err) return 1; @@ -484,6 +486,8 @@ uci_lua_rename(lua_State *L) goto error; error: + if (s) + free(s); return uci_push_status(L, ctx, false); } @@ -533,6 +537,8 @@ uci_lua_reorder(lua_State *L) goto error; error: + if (s) + free(s); return uci_push_status(L, ctx, false); } @@ -545,6 +551,7 @@ uci_lua_set(lua_State *L) bool istable = false; int err = UCI_ERR_MEM; char *s = NULL; + const char *v; int i, nargs, offset = 0; ctx = find_context(L, &offset); @@ -591,8 +598,14 @@ uci_lua_set(lua_State *L) if (istable) { if (lua_objlen(L, nargs) == 1) { i = 1; - if (ptr.o) + if (ptr.o) { + v = ptr.value; + ptr.value = NULL; err = uci_delete(ctx, &ptr); + if (err) + goto error; + ptr.value = v; + } } else { i = 2; err = uci_set(ctx, &ptr); @@ -616,6 +629,8 @@ uci_lua_set(lua_State *L) error: + if (s) + free(s); return uci_push_status(L, ctx, false); } @@ -665,6 +680,8 @@ uci_lua_package_cmd(lua_State *L, enum pkg_cmd cmd) } err: + if (s) + free(s); return uci_push_status(L, ctx, false); } @@ -863,20 +880,6 @@ uci_lua_add_delta(lua_State *L) } static int -uci_lua_load_plugins(lua_State *L) -{ - struct uci_context *ctx; - int offset = 0; - const char *str = NULL; - - ctx = find_context(L, &offset); - if (lua_isstring(L, -1)) - str = lua_tostring(L, -1); - uci_load_plugins(ctx, str); - return uci_push_status(L, ctx, false); -} - -static int uci_lua_set_savedir(lua_State *L) { struct uci_context *ctx; @@ -945,7 +948,6 @@ static const luaL_Reg uci[] = { { "foreach", uci_lua_foreach }, { "add_history", uci_lua_add_delta }, { "add_delta", uci_lua_add_delta }, - { "load_plugins", uci_lua_load_plugins }, { "get_confdir", uci_lua_get_confdir }, { "set_confdir", uci_lua_set_confdir }, { "get_savedir", uci_lua_get_savedir },