do not fail when attempting to set a nonexistant option to an empty value
authorFelix Fietkau <nbd@openwrt.org>
Tue, 18 Aug 2009 19:04:40 +0000 (21:04 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 18 Aug 2009 19:04:40 +0000 (21:04 +0200)
list.c

diff --git a/list.c b/list.c
index 352596d02642d8f56379728e16b43abd687c7e21..cd995fee2ff931da9d55d40f882555dc4e48058f 100644 (file)
--- a/list.c
+++ b/list.c
@@ -667,6 +667,11 @@ int uci_set(struct uci_context *ctx, struct uci_ptr *ptr)
                        ptr->o = uci_to_option(e);
        }
        if (!ptr->value[0]) {
+               /* if setting a nonexistant option/section to a nonexistant value,
+                * exit without errors */
+               if (!(ptr->flags & UCI_LOOKUP_COMPLETE))
+                       return 0;
+
                return uci_delete(ctx, ptr);
        } else if (!ptr->o && ptr->option) { /* new option */
                ptr->o = uci_alloc_option(ptr->s, ptr->option, ptr->value);