Volatile-ize all five places where we expect a PG_TRY block to restore
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 18 Feb 2010 23:50:33 +0000 (23:50 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 18 Feb 2010 23:50:33 +0000 (23:50 +0000)
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

index 53c298bae533c208ea6eb14200e32f15fdb240f8..9e28ffe03aa3fd3d31a675c1a9fd8b190a594241 100644 (file)
@@ -29,7 +29,7 @@
  * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.66.2.7 2009/11/03 08:12:46 petere Exp $
+ * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.66.2.8 2010/02/18 23:50:33 tgl Exp $
  *
  *********************************************************************
  */
@@ -1853,7 +1853,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)
@@ -2006,7 +2006,7 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
    int         i,
                rv;
    PLyPlanObject *plan;
-   MemoryContext oldcontext;
+   volatile MemoryContext oldcontext;
 
    if (list != NULL)
    {
@@ -2150,7 +2150,7 @@ static PyObject *
 PLy_spi_execute_query(char *query, long limit)
 {
    int         rv;
-   MemoryContext oldcontext;
+   volatile MemoryContext oldcontext;
 
    oldcontext = CurrentMemoryContext;
    PG_TRY();
@@ -2187,7 +2187,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);