From 08181b427c1b3a4537c331b30492da1881a5b341 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 18 Feb 2010 23:50:20 +0000 Subject: [PATCH] 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. --- src/pl/plpython/plpython.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index dffb1e3d689..aa6ac71cb1e 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.106.2.1 2009/11/03 08:44:52 petere Exp $ + * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.106.2.2 2010/02/18 23:50:20 tgl Exp $ * ********************************************************************* */ @@ -2292,7 +2292,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) @@ -2457,7 +2457,7 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit) int i, rv; PLyPlanObject *plan; - MemoryContext oldcontext; + volatile MemoryContext oldcontext; if (list != NULL) { @@ -2605,7 +2605,7 @@ static PyObject * PLy_spi_execute_query(char *query, long limit) { int rv; - MemoryContext oldcontext; + volatile MemoryContext oldcontext; oldcontext = CurrentMemoryContext; PG_TRY(); @@ -2642,7 +2642,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);