summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-02-18 23:50:27 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2010-02-18 23:50:27 +0000
commitaff66ef11314bf24863b503d9d8949c712e25100 (patch)
tree564cb5515d734ef8e9ab9d0cb2c1898b676f24ae
parentf9aa8763e293ad81bd3a2f7b2e3849631b77f762 (diff)
Volatile-ize all five places where we expect a PG_TRY block to restore
old memory context in plpython. Before only one of them was marked volatile, but per report from Zdenek Kotala, some compilers do the wrong thing here.
-rw-r--r--src/pl/plpython/plpython.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c
index bd87778d06e..8485aa6311b 100644
--- a/src/pl/plpython/plpython.c
+++ b/src/pl/plpython/plpython.c
@@ -1,7 +1,7 @@
/**********************************************************************
* plpython.c - python as a procedural language for PostgreSQL
*
- * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.90.2.5 2009/11/03 08:29:51 petere Exp $
+ * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.90.2.6 2010/02/18 23:50:27 tgl Exp $
*
*********************************************************************
*/
@@ -2273,7 +2273,7 @@ PLy_spi_prepare(PyObject * self, PyObject * args)
PyObject *volatile optr = NULL;
char *query;
void *tmpplan;
- MemoryContext oldcontext;
+ volatile MemoryContext oldcontext;
/* Can't execute more if we have an unhandled error */
if (PLy_error_in_progress)
@@ -2431,7 +2431,7 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
int i,
rv;
PLyPlanObject *plan;
- MemoryContext oldcontext;
+ volatile MemoryContext oldcontext;
if (list != NULL)
{
@@ -2579,7 +2579,7 @@ static PyObject *
PLy_spi_execute_query(char *query, long limit)
{
int rv;
- MemoryContext oldcontext;
+ volatile MemoryContext oldcontext;
oldcontext = CurrentMemoryContext;
PG_TRY();
@@ -2616,7 +2616,7 @@ static PyObject *
PLy_spi_execute_fetch_result(SPITupleTable *tuptable, int rows, int status)
{
PLyResultObject *result;
- MemoryContext oldcontext;
+ volatile MemoryContext oldcontext;
result = (PLyResultObject *) PLy_result_new();
Py_DECREF(result->status);