X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/blobdiff_plain/45b79be2f6cf1e23f0e50747934390c01625af8b..ac79c9d337cc83d38b530a8ba06fdca15ffe217e:/application/json.c diff --git a/application/json.c b/application/json.c index 5a5446e..bd27f2f 100644 --- a/application/json.c +++ b/application/json.c @@ -51,6 +51,13 @@ JSONParser* json_parser_new(void) { return parser; } +void json_parser_free(JSONParser *p) { + if(p->states) free(p->states); + if(p->readvalue_stack) free(p->readvalue_stack); + + free(p); +} + void json_parser_fill(JSONParser *p, const char *buf, size_t size) { p->buffer = buf; p->size = size; @@ -615,9 +622,9 @@ int json_reader_isnull(JSONParser *p) { JSONLiteralType json_reader_literal(JSONParser *p) { const char *l = p->reader_token.content; size_t token_len = p->reader_token.length; - if(token_len == 4 && !memcpy(l, "true", 5)) { + if(token_len == 4 && !memcmp(l, "true", 4)) { return JSON_TRUE; - } else if(token_len == 5 && !memcpy(l, "false", 5)) { + } else if(token_len == 5 && !memcmp(l, "false", 5)) { return JSON_FALSE; } return JSON_NULL; @@ -745,10 +752,11 @@ static int add_to_parent(JSONParser *p, JSONValue *parent, JSONValue *v) { static int readvaluestack_add(JSONParser *p, JSONValue *v) { if(p->readvalue_nelm == p->readvalue_alloc) { p->readvalue_alloc *= 2; - p->readvalue_stack = realloc(p->readvalue_stack, sizeof(JSONValue*) * p->readvalue_alloc); - if(!p->readvalue_stack) { + JSONValue **new_stack = realloc(p->readvalue_stack, sizeof(JSONValue*) * p->readvalue_alloc); + if(!new_stack) { return -1; } + p->readvalue_stack = new_stack; } p->readvalue_stack[p->readvalue_nelm++] = v; return 0;