Commit ac50f848 authored by Tom Lane's avatar Tom Lane

Fix misuse of TextDatumGetCString().

"TextDatumGetCString(PG_GETARG_TEXT_P(x))" is formally wrong: a text*
is not a Datum.  Although this coding will accidentally fail to fail on
all known platforms, it risks leaking memory if a detoast step is needed,
unlike "TextDatumGetCString(PG_GETARG_DATUM(x))" which is what's used
elsewhere.  Make pg_get_object_address() fall in line with other uses.

Noted while reviewing two-arg current_setting() patch.
parent 10fb48d6
...@@ -1831,7 +1831,7 @@ textarray_to_strvaluelist(ArrayType *arr) ...@@ -1831,7 +1831,7 @@ textarray_to_strvaluelist(ArrayType *arr)
Datum Datum
pg_get_object_address(PG_FUNCTION_ARGS) pg_get_object_address(PG_FUNCTION_ARGS)
{ {
char *ttype = TextDatumGetCString(PG_GETARG_TEXT_P(0)); char *ttype = TextDatumGetCString(PG_GETARG_DATUM(0));
ArrayType *namearr = PG_GETARG_ARRAYTYPE_P(1); ArrayType *namearr = PG_GETARG_ARRAYTYPE_P(1);
ArrayType *argsarr = PG_GETARG_ARRAYTYPE_P(2); ArrayType *argsarr = PG_GETARG_ARRAYTYPE_P(2);
int itype; int itype;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment