Beispiel #1
0
/* Various */
static int try_realloc(void **ptr, size_t new_size) {
    void *reallocated_ptr = parson_realloc(*ptr, new_size);
    if (!reallocated_ptr)
        return ERROR;
    *ptr = reallocated_ptr;
    return SUCCESS;
}
Beispiel #2
0
static char * copy_and_remove_whitespaces(const char *string) {
    char *output_string = (char*)parson_malloc(strlen(string) + 1);
    char *output_string_ptr = output_string;
    const char *string_ptr = string;
    const char *skipped_string = NULL;
    void *reallocated_ptr;
    char current_char;
    if (!output_string) { return NULL; }
    while (*string_ptr) {
        current_char = *string_ptr;
        switch (current_char) {
            case ' ': case '\r': case '\n': case '\t':
                string_ptr++;
                break;
            case '\"':
                skipped_string = skip_string(string_ptr);
                if (!skipped_string) { parson_free(output_string); return NULL; }
                strncpy(output_string_ptr, string_ptr, skipped_string - string_ptr);
                output_string_ptr = output_string_ptr + (skipped_string - string_ptr);
                string_ptr = skipped_string;
                break;
            default:
                *output_string_ptr = current_char;
                string_ptr++;
                output_string_ptr++;
                break;
        }
    }
    *output_string_ptr = '\0';
    reallocated_ptr = parson_realloc(output_string, strlen(output_string) + 1);
    if (!reallocated_ptr) { parson_free(output_string); return NULL; }
    output_string = (char*)reallocated_ptr;
    return output_string;
}
Beispiel #3
0
/* Various */
static int try_realloc(void **ptr, size_t new_size) {
    if (0 == new_size) { return ERROR; }

    void *reallocated_ptr = parson_realloc(*ptr, new_size);  // clang - size 0
    if (!reallocated_ptr) { return ERROR; }
    *ptr = reallocated_ptr;
    return SUCCESS;
}
Beispiel #4
0
static int json_object_add(JSON_Object *object, const char *name, JSON_Value *value) {
    size_t index;
    void *reallocated_ptr;
    if (object->count >= object->capacity) {
        size_t new_capacity = object->capacity * 2;
        if (new_capacity > MAX_CAPACITY) { return 0; }
        reallocated_ptr = parson_realloc((void*)object->names, new_capacity * sizeof(char*));
        if (!reallocated_ptr) { return 0;}
        object->names = (const char**)reallocated_ptr;
        reallocated_ptr = parson_realloc(object->values, new_capacity * sizeof(JSON_Value*));
        if (!reallocated_ptr) { return 0;}
        object->values = (JSON_Value**)reallocated_ptr;
        object->capacity = new_capacity;
    }
    if (json_object_get_value(object, name) != NULL) { return 0; }
    index = object->count;
    object->names[index] = parson_strdup(name);
    if (!object->names[index]) { return 0; }
    object->values[index] = value;
    object->count++;
    return 1;
}
Beispiel #5
0
static int json_array_add(JSON_Array *array, JSON_Value *value) {
    void *reallocated_ptr;
    if (array->count >= array->capacity) {
        size_t new_capacity = array->capacity * 2;
        if (new_capacity > MAX_CAPACITY) { return 0; }
        reallocated_ptr = parson_realloc(array->items, new_capacity * sizeof(JSON_Value*));
        if (!reallocated_ptr) { return 0; }
        array->items = (JSON_Value**)reallocated_ptr;
        array->capacity = new_capacity;
    }
    array->items[array->count] = value;
    array->count++;
    return 1;
}