Volatile-qualify a dozen variables in plpython.c to eliminate warnings
authorTom Lane
Fri, 13 Jul 2007 04:57:59 +0000 (04:57 +0000)
committerTom Lane
Fri, 13 Jul 2007 04:57:59 +0000 (04:57 +0000)
from old versions of gcc.  It's not clear to me that this is really
necessary for correctness, but less warnings are always good.
Per buildfarm results and local testing.

src/pl/plpython/plpython.c

index b7172cd2dd5e15ef651f43205e52b485c4ee7064..934413d4e412b0c9d6f20716bb056d69ac5fbc6e 100644 (file)
@@ -1,7 +1,7 @@
 /**********************************************************************
  * plpython.c - python as a procedural language for PostgreSQL
  *
- * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.101 2007/05/31 15:13:05 petere Exp $
+ * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.102 2007/07/13 04:57:59 tgl Exp $
  *
  *********************************************************************
  */
@@ -1714,7 +1714,7 @@ PLyMapping_ToTuple(PLyTypeInfo * info, PyObject * mapping)
    HeapTuple   tuple;
    Datum      *values;
    char       *nulls;
-   int         i;
+   volatile int i;
 
    Assert(PyMapping_Check(mapping));
 
@@ -1729,8 +1729,8 @@ PLyMapping_ToTuple(PLyTypeInfo * info, PyObject * mapping)
    for (i = 0; i < desc->natts; ++i)
    {
        char       *key;
-       PyObject   *value,
-                  *so;
+       PyObject   * volatile value,
+                  * volatile so;
 
        key = NameStr(desc->attrs[i]->attname);
        value = so = NULL;
@@ -1794,7 +1794,7 @@ PLySequence_ToTuple(PLyTypeInfo * info, PyObject * sequence)
    HeapTuple   tuple;
    Datum      *values;
    char       *nulls;
-   int         i;
+   volatile int i;
 
    Assert(PySequence_Check(sequence));
 
@@ -1818,8 +1818,8 @@ PLySequence_ToTuple(PLyTypeInfo * info, PyObject * sequence)
    nulls = palloc(sizeof(char) * desc->natts);
    for (i = 0; i < desc->natts; ++i)
    {
-       PyObject   *value,
-                  *so;
+       PyObject   * volatile value,
+                  * volatile so;
 
        value = so = NULL;
        PG_TRY();
@@ -1876,7 +1876,7 @@ PLyObject_ToTuple(PLyTypeInfo * info, PyObject * object)
    HeapTuple   tuple;
    Datum      *values;
    char       *nulls;
-   int         i;
+   volatile int i;
 
    desc = lookup_rowtype_tupdesc(info->out.d.typoid, -1);
    if (info->is_rowtype == 2)
@@ -1889,8 +1889,8 @@ PLyObject_ToTuple(PLyTypeInfo * info, PyObject * object)
    for (i = 0; i < desc->natts; ++i)
    {
        char       *key;
-       PyObject   *value,
-                  *so;
+       PyObject   * volatile value,
+                  * volatile so;
 
        key = NameStr(desc->attrs[i]->attname);
        value = so = NULL;
@@ -2473,13 +2473,14 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
    PG_TRY();
    {
        char       *nulls = palloc(nargs * sizeof(char));
+       volatile int j;
 
-       for (i = 0; i < nargs; i++)
+       for (j = 0; j < nargs; j++)
        {
            PyObject   *elem,
                       *so;
 
-           elem = PySequence_GetItem(list, i);
+           elem = PySequence_GetItem(list, j);
            if (elem != Py_None)
            {
                so = PyObject_Str(elem);
@@ -2492,10 +2493,10 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
                {
                    char       *sv = PyString_AsString(so);
 
-                   plan->values[i] =
-                       InputFunctionCall(&(plan->args[i].out.d.typfunc),
+                   plan->values[j] =
+                       InputFunctionCall(&(plan->args[j].out.d.typfunc),
                                          sv,
-                                         plan->args[i].out.d.typioparam,
+                                         plan->args[j].out.d.typioparam,
                                          -1);
                }
                PG_CATCH();
@@ -2506,17 +2507,17 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
                PG_END_TRY();
 
                Py_DECREF(so);
-               nulls[i] = ' ';
+               nulls[j] = ' ';
            }
            else
            {
                Py_DECREF(elem);
-               plan->values[i] =
-                   InputFunctionCall(&(plan->args[i].out.d.typfunc),
+               plan->values[j] =
+                   InputFunctionCall(&(plan->args[j].out.d.typfunc),
                                      NULL,
-                                     plan->args[i].out.d.typioparam,
+                                     plan->args[j].out.d.typioparam,
                                      -1);
-               nulls[i] = 'n';
+               nulls[j] = 'n';
            }
        }
 
@@ -2527,6 +2528,8 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
    }
    PG_CATCH();
    {
+       int     k;
+
        MemoryContextSwitchTo(oldcontext);
        PLy_error_in_progress = CopyErrorData();
        FlushErrorState();
@@ -2534,13 +2537,13 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, long limit)
        /*
         * cleanup plan->values array
         */
-       for (i = 0; i < nargs; i++)
+       for (k = 0; k < nargs; k++)
        {
-           if (!plan->args[i].out.d.typbyval &&
-               (plan->values[i] != PointerGetDatum(NULL)))
+           if (!plan->args[k].out.d.typbyval &&
+               (plan->values[k] != PointerGetDatum(NULL)))
            {
-               pfree(DatumGetPointer(plan->values[i]));
-               plan->values[i] = PointerGetDatum(NULL);
+               pfree(DatumGetPointer(plan->values[k]));
+               plan->values[k] = PointerGetDatum(NULL);
            }
        }