static JSON_Status json_object_init()

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