}
static int
-uci_fill_ptr(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_element *e, bool complete)
+uci_fill_ptr(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_element *e)
{
UCI_ASSERT(ctx, ptr != NULL);
UCI_ASSERT(ctx, e != NULL);
ptr->package = ptr->p->e.name;
ptr->flags |= UCI_LOOKUP_DONE;
- if (complete)
- ptr->flags |= UCI_LOOKUP_COMPLETE;
return 0;
}
ctx->internal = !pctx->merge;
UCI_NESTED(uci_add_section, ctx, pctx->package, type, &pctx->section);
} else {
- uci_fill_ptr(ctx, &ptr, &pctx->package->e, false);
+ uci_fill_ptr(ctx, &ptr, &pctx->package->e);
e = uci_lookup_list(&pctx->package->sections, name);
if (e)
ptr.s = uci_to_section(e);
value = next_arg(ctx, str, false, false);
assert_eol(ctx, str);
- uci_fill_ptr(ctx, &ptr, &pctx->section->e, false);
+ uci_fill_ptr(ctx, &ptr, &pctx->section->e);
e = uci_lookup_list(&pctx->section->options, name);
if (e)
ptr.o = uci_to_option(e);
static struct uci_package *uci_file_load(struct uci_context *ctx, const char *name)
{
struct uci_package *package = NULL;
- char *filename;
+ char *filename = NULL;
bool confdir;
FILE *file = NULL;
done:
uci_close_stream(file);
- if (ctx->err)
+ if (ctx->err) {
+ free(filename);
UCI_THROW(ctx, ctx->err);
+ }
return package;
}