jshn: add error handling and fix memory leak in jshn_format().
Though currently jshn is more a one-shot data transformation tool and won't leak much memory in its lifetime, people may use it as example code, so do it right. Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
parent
7f1ce63a84
commit
8c6dadbe03
1 changed files with 18 additions and 5 deletions
23
jshn.c
23
jshn.c
|
@ -258,18 +258,31 @@ static int jshn_format(bool no_newline, bool indent)
|
|||
{
|
||||
json_object *obj;
|
||||
const char *output;
|
||||
char *blobmsg_output = NULL;
|
||||
int ret = -1;
|
||||
|
||||
if (!(obj = json_object_new_object()))
|
||||
return -1;
|
||||
|
||||
obj = json_object_new_object();
|
||||
jshn_add_objects(obj, "J_V", false);
|
||||
output = json_object_to_json_string(obj);
|
||||
if (!(output = json_object_to_json_string(obj)))
|
||||
goto out;
|
||||
|
||||
if (indent) {
|
||||
blob_buf_init(&b, 0);
|
||||
blobmsg_add_json_from_string(&b, output);
|
||||
output = blobmsg_format_json_indent(b.head, 1, 0);
|
||||
if (!blobmsg_add_json_from_string(&b, output))
|
||||
goto out;
|
||||
if (!(blobmsg_output = blobmsg_format_json_indent(b.head, 1, 0)))
|
||||
goto out;
|
||||
output = blobmsg_output;
|
||||
}
|
||||
fprintf(stdout, "%s%s", output, no_newline ? "" : "\n");
|
||||
free(blobmsg_output);
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
json_object_put(obj);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int usage(const char *progname)
|
||||
|
|
Loading…
Reference in a new issue