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;
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;