in lib/parson.c [422:462]
static JSON_Status json_object_init(JSON_Object *object, size_t capacity) {
unsigned int i = 0;
object->cells = NULL;
object->names = NULL;
object->values = NULL;
object->cell_ixs = NULL;
object->hashes = NULL;
object->count = 0;
object->cell_capacity = capacity;
object->item_capacity = (unsigned int)(capacity * 0.7f);
if (capacity == 0) {
return JSONSuccess;
}
object->cells = (size_t*)parson_malloc(object->cell_capacity * sizeof(*object->cells));
object->names = (char**)parson_malloc(object->item_capacity * sizeof(*object->names));
object->values = (JSON_Value**)parson_malloc(object->item_capacity * sizeof(*object->values));
object->cell_ixs = (size_t*)parson_malloc(object->item_capacity * sizeof(*object->cell_ixs));
object->hashes = (unsigned long*)parson_malloc(object->item_capacity * sizeof(*object->hashes));
if (object->cells == NULL
|| object->names == NULL
|| object->values == NULL
|| object->cell_ixs == NULL
|| object->hashes == NULL) {
goto error;
}
for (i = 0; i < object->cell_capacity; i++) {
object->cells[i] = OBJECT_INVALID_IX;
}
return JSONSuccess;
error:
parson_free(object->cells);
parson_free(object->names);
parson_free(object->values);
parson_free(object->cell_ixs);
parson_free(object->hashes);
return JSONFailure;
}