X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=json_script.c;h=0ec7b382ad94d4bbdb64156210243513af9daf30;hb=8cc3903383d0022701bbdb1ca25799a9a087c265;hp=9d5e9d2bf5a4287149e00284fc8924e01ac11978;hpb=d416bf66555c9398f81b4546c96084b1d311fd8d;p=project%2Flibubox.git diff --git a/json_script.c b/json_script.c index 9d5e9d2..0ec7b38 100644 --- a/json_script.c +++ b/json_script.c @@ -582,12 +582,18 @@ void json_script_run(struct json_script_ctx *ctx, const char *name, json_script_run_file(ctx, file, vars); } -static void __json_script_file_free(struct json_script_ctx *ctx, struct json_script_file *f) +static void __json_script_file_free(struct json_script_file *f) { struct json_script_file *next; - for (next = f->next; f; f = next, next = f->next) - free(f); + if (!f) + return; + + next = f->next; + free(f); + + if (next) + return __json_script_file_free(next); } void @@ -596,7 +602,7 @@ json_script_free(struct json_script_ctx *ctx) struct json_script_file *f, *next; avl_remove_all_elements(&ctx->files, f, avl, next) - __json_script_file_free(ctx, f); + __json_script_file_free(f); blob_buf_free(&ctx->buf); }