From: Tom Lane Date: Thu, 30 Jan 2020 23:25:56 +0000 (-0500) Subject: In jsonb_plpython.c, suppress warning message from gcc 10. X-Git-Tag: REL_11_7~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39428be9ce8f4fa124ad6207e18e57c6c2478316;p=thirdparty%2Fpostgresql.git In jsonb_plpython.c, suppress warning message from gcc 10. Very recent gcc complains that PLyObject_ToJsonbValue could return a pointer to a local variable. I think it's wrong; but the coding is fragile enough, and the savings of one palloc() minimal enough, that it seems better to just do a palloc() all the time. (My other idea of tweaking the if-condition doesn't suppress the warning.) Back-patch to v11 where this code was introduced. Discussion: https://postgr.es/m/21547.1580170366@sss.pgh.pa.us --- diff --git a/contrib/jsonb_plpython/jsonb_plpython.c b/contrib/jsonb_plpython/jsonb_plpython.c index 1bc984d5c4d..67565042c63 100644 --- a/contrib/jsonb_plpython/jsonb_plpython.c +++ b/contrib/jsonb_plpython/jsonb_plpython.c @@ -367,7 +367,6 @@ PLyNumber_ToJsonbValue(PyObject *obj, JsonbValue *jbvNum) static JsonbValue * PLyObject_ToJsonbValue(PyObject *obj, JsonbParseState **jsonb_state, bool is_elem) { - JsonbValue buf; JsonbValue *out; if (!(PyString_Check(obj) || PyUnicode_Check(obj))) @@ -378,11 +377,7 @@ PLyObject_ToJsonbValue(PyObject *obj, JsonbParseState **jsonb_state, bool is_ele return PLyMapping_ToJsonbValue(obj, jsonb_state); } - /* Allocate JsonbValue in heap only if it is raw scalar value. */ - if (*jsonb_state) - out = &buf; - else - out = palloc(sizeof(JsonbValue)); + out = palloc(sizeof(JsonbValue)); if (obj == Py_None) out->type = jbvNull;