diff --git a/src/pl/plpython/plpy_exec.c b/src/pl/plpython/plpy_exec.c index b2425edd6b496cc101ffbbc1402f709fadc80d3e..74e2f3dadff0ab7964fe4845babb9dd5b77c3e78 100644 --- a/src/pl/plpython/plpy_exec.c +++ b/src/pl/plpython/plpy_exec.c @@ -635,9 +635,7 @@ PLy_modify_tuple(PLyProcedure *proc, PyObject *pltd, TriggerData *tdata, { PyObject *volatile plntup; PyObject *volatile plkeys; - PyObject *volatile platt; PyObject *volatile plval; - PyObject *volatile plstr; HeapTuple rtup; int natts, i, @@ -653,7 +651,7 @@ PLy_modify_tuple(PLyProcedure *proc, PyObject *pltd, TriggerData *tdata, plerrcontext.previous = error_context_stack; error_context_stack = &plerrcontext; - plntup = plkeys = platt = plval = plstr = NULL; + plntup = plkeys = plval = NULL; modattrs = NULL; modvalues = NULL; modnulls = NULL; @@ -663,10 +661,10 @@ PLy_modify_tuple(PLyProcedure *proc, PyObject *pltd, TriggerData *tdata, if ((plntup = PyDict_GetItemString(pltd, "new")) == NULL) ereport(ERROR, (errmsg("TD[\"new\"] deleted, cannot modify row"))); + Py_INCREF(plntup); if (!PyDict_Check(plntup)) ereport(ERROR, (errmsg("TD[\"new\"] is not a dictionary"))); - Py_INCREF(plntup); plkeys = PyDict_Keys(plntup); natts = PyList_Size(plkeys); @@ -679,6 +677,7 @@ PLy_modify_tuple(PLyProcedure *proc, PyObject *pltd, TriggerData *tdata, for (i = 0; i < natts; i++) { + PyObject *platt; char *plattstr; platt = PyList_GetItem(plkeys, i); @@ -745,7 +744,6 @@ PLy_modify_tuple(PLyProcedure *proc, PyObject *pltd, TriggerData *tdata, Py_XDECREF(plntup); Py_XDECREF(plkeys); Py_XDECREF(plval); - Py_XDECREF(plstr); if (modnulls) pfree(modnulls);