static int s_aws_array_list_to_json()

in source/kms.c [507:548]


static int s_aws_array_list_to_json(
    struct json_object *obj,
    const char *const key,
    const struct aws_array_list *array) {

    AWS_PRECONDITION(obj);
    AWS_PRECONDITION(aws_c_string_is_valid(key));
    AWS_PRECONDITION(aws_array_list_is_valid(array));

    struct json_object *arr = json_object_new_array();
    if (arr == NULL) {
        return AWS_OP_ERR;
    }

    for (size_t i = 0; i < aws_array_list_length(array); i++) {
        struct aws_string **elem = NULL;
        if (aws_array_list_get_at_ptr(array, (void **)&elem, i) != AWS_OP_SUCCESS) {
            goto clean_up;
        }

        struct json_object *elem_arr = json_object_new_string(aws_string_c_str(*elem));
        if (elem == NULL) {
            goto clean_up;
        }

        if (json_object_array_add(arr, elem_arr) < 0) {
            json_object_put(elem_arr);
            goto clean_up;
        }
    }

    if (json_object_object_add(obj, key, arr) < 0) {
        goto clean_up;
    }

    return AWS_OP_SUCCESS;

clean_up:
    json_object_put(arr);

    return AWS_OP_ERR;
}