]> pilppa.org Git - uci.git/blobdiff - uci.h
memory leak fix, for config file load case
[uci.git] / uci.h
diff --git a/uci.h b/uci.h
index d83da52c1794583d09d39617e1ff44cfe58f5be6..fe5e31443d820520111a86ab1f88b5b4ee467483 100644 (file)
--- a/uci.h
+++ b/uci.h
@@ -662,6 +662,8 @@ uci_lookup_package(struct uci_context *ctx, const char *name)
        struct uci_element *e = NULL;
        if (uci_lookup_next(ctx, &e, &ctx->root, name) == 0)
                return uci_to_package(e);
+       else
+               return NULL;
 }
 
 /**
@@ -676,6 +678,8 @@ uci_lookup_section(struct uci_context *ctx, struct uci_package *p, const char *n
        struct uci_element *e = NULL;
        if (uci_lookup_next(ctx, &e, &p->sections, name) == 0)
                return uci_to_section(e);
+       else
+               return NULL;
 }
 
 /**
@@ -690,6 +694,20 @@ uci_lookup_option(struct uci_context *ctx, struct uci_section *s, const char *na
        struct uci_element *e = NULL;
        if (uci_lookup_next(ctx, &e, &s->options, name) == 0)
                return uci_to_option(e);
+       else
+               return NULL;
+}
+
+static inline const char *
+uci_lookup_option_string(struct uci_context *ctx, struct uci_section *s, const char *name)
+{
+       struct uci_option *o;
+
+       o = uci_lookup_option(ctx, s, name);
+       if (!o || o->type != UCI_TYPE_STRING)
+               return NULL;
+
+       return o->v.string;
 }
 
 #endif