diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index b748af1d358..2340d47891f 100644 --- a/src/pl/plpython/plpython.c +++ b/src/pl/plpython/plpython.c @@ -657,9 +657,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, @@ -675,7 +673,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; @@ -685,10 +683,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); @@ -701,6 +699,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); @@ -767,7 +766,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);