diff options
Diffstat (limited to 'src/backend/utils/adt/jsonb.c')
-rw-r--r-- | src/backend/utils/adt/jsonb.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c index 7e01432546d..14ce57e252d 100644 --- a/src/backend/utils/adt/jsonb.c +++ b/src/backend/utils/adt/jsonb.c @@ -1455,7 +1455,7 @@ jsonb_object_two_arg(PG_FUNCTION_ARGS) errmsg("wrong number of array subscripts"))); if (nkdims == 0) - PG_RETURN_DATUM(CStringGetTextDatum("{}")); + goto close_object; deconstruct_array(key_array, TEXTOID, -1, false, 'i', @@ -1509,13 +1509,14 @@ jsonb_object_two_arg(PG_FUNCTION_ARGS) (void) pushJsonbValue(&result.parseState, WJB_VALUE, &v); } - result.res = pushJsonbValue(&result.parseState, WJB_END_OBJECT, NULL); - pfree(key_datums); pfree(key_nulls); pfree(val_datums); pfree(val_nulls); +close_object: + result.res = pushJsonbValue(&result.parseState, WJB_END_OBJECT, NULL); + PG_RETURN_POINTER(JsonbValueToJsonb(result.res)); } |