diff --git a/src/include/value.h b/src/include/value.h index b9bece10..a443d5bd 100644 --- a/src/include/value.h +++ b/src/include/value.h @@ -54,6 +54,7 @@ enum value_type { ValueString, ValueFloat, ValueDouble, + ValueBASE64, ValueJSON, ValueDeque, ValueART, diff --git a/src/libpgagroal/json.c b/src/libpgagroal/json.c index ede7fded..93763513 100644 --- a/src/libpgagroal/json.c +++ b/src/libpgagroal/json.c @@ -564,6 +564,7 @@ type_allowed(enum value_type type) case ValueUInt64: case ValueBool: case ValueString: + case ValueBASE64: case ValueFloat: case ValueDouble: case ValueJSON: @@ -584,4 +585,3 @@ array_to_string(struct json* array, int32_t format, char* tag, int indent) { return pgagroal_deque_to_string(array->elements, format, tag, indent); } - diff --git a/src/libpgagroal/value.c b/src/libpgagroal/value.c index 6f6ca9d2..da823fd3 100644 --- a/src/libpgagroal/value.c +++ b/src/libpgagroal/value.c @@ -114,6 +114,9 @@ pgagroal_value_create(enum value_type type, uintptr_t data, struct value** value case ValueString: val->to_string = string_to_string_cb; break; + case ValueBASE64: + val->to_string = string_to_string_cb; + break; case ValueJSON: val->to_string = json_to_string_cb; break; @@ -131,16 +134,13 @@ pgagroal_value_create(enum value_type type, uintptr_t data, struct value** value { case ValueString: { - char* orig = NULL; - char* str = NULL; - - orig = (char*) data; - if (orig != NULL) - { - str = pgagroal_append(str, orig); - } - - val->data = (uintptr_t) str; + val->data = (uintptr_t)pgagroal_append(NULL, (char*)data); + val->destroy_data = free_destroy_cb; + break; + } + case ValueBASE64: + { + val->data = (uintptr_t)pgagroal_append(NULL, (char*)data); val->destroy_data = free_destroy_cb; break; }