X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/blobdiff_plain/46481813a886e19c16513c993a2cac6a20d1e846..ac79c9d337cc83d38b530a8ba06fdca15ffe217e:/application/json.c diff --git a/application/json.c b/application/json.c index 719a570..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; @@ -614,9 +621,10 @@ int json_reader_isnull(JSONParser *p) { JSONLiteralType json_reader_literal(JSONParser *p) { const char *l = p->reader_token.content; - if(!strcmp(l, "true")) { + size_t token_len = p->reader_token.length; + if(token_len == 4 && !memcmp(l, "true", 4)) { return JSON_TRUE; - } else if(!strcmp(l, "false")) { + } else if(token_len == 5 && !memcmp(l, "false", 5)) { return JSON_FALSE; } return JSON_NULL; @@ -744,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;