aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plpython/plpy_plpymodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpython/plpy_plpymodule.c')
-rw-r--r--src/pl/plpython/plpy_plpymodule.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/pl/plpython/plpy_plpymodule.c b/src/pl/plpython/plpy_plpymodule.c
index f136e8ece8b..16d508943f0 100644
--- a/src/pl/plpython/plpy_plpymodule.c
+++ b/src/pl/plpython/plpy_plpymodule.c
@@ -424,11 +424,12 @@ PLy_output(volatile int level, PyObject *self, PyObject *args, PyObject *kw)
else
so = PyObject_Str(args);
- if (so == NULL || ((message = pstrdup(PyString_AsString(so))) == NULL))
+ if (so == NULL || ((message = PyString_AsString(so)) == NULL))
{
level = ERROR;
message = dgettext(TEXTDOMAIN, "could not parse error message in plpy.elog");
}
+ message = pstrdup(message);
Py_XDECREF(so);
@@ -444,7 +445,8 @@ PLy_output(volatile int level, PyObject *self, PyObject *args, PyObject *kw)
if (PyTuple_Size(args) != 0)
PLy_elog(ERROR, "the message is already specified");
- pfree(message);
+ if (message)
+ pfree(message);
message = object_to_string(value);
}
else if (strcmp(keyword, "detail") == 0)