Suppress some "variable might be clobbered by longjmp" warnings.

Seen with an older gcc version.  I'm not sure these represent any real
risk factor, but still a bit scary.  Anyway we have lots of other
volatile-marked variables in this code, so a couple more won't hurt.
pull/1/head
Tom Lane 15 years ago
parent dfe18f18d2
commit 4172bd8830
  1. 37
      src/pl/plperl/Util.xs
  2. 6
      src/pl/plpython/plpython.c

@ -36,37 +36,38 @@
static void static void
do_util_elog(int level, SV *msg) do_util_elog(int level, SV *msg)
{ {
MemoryContext oldcontext = CurrentMemoryContext; MemoryContext oldcontext = CurrentMemoryContext;
char *cmsg = NULL; char * volatile cmsg = NULL;
PG_TRY(); PG_TRY();
{ {
cmsg = sv2cstr(msg); cmsg = sv2cstr(msg);
elog(level, "%s", cmsg); elog(level, "%s", cmsg);
pfree(cmsg); pfree(cmsg);
} }
PG_CATCH(); PG_CATCH();
{ {
ErrorData *edata; ErrorData *edata;
/* Must reset elog.c's state */ /* Must reset elog.c's state */
MemoryContextSwitchTo(oldcontext); MemoryContextSwitchTo(oldcontext);
edata = CopyErrorData(); edata = CopyErrorData();
FlushErrorState(); FlushErrorState();
if (cmsg) if (cmsg)
pfree(cmsg); pfree(cmsg);
/* Punt the error to Perl */ /* Punt the error to Perl */
croak("%s", edata->message); croak("%s", edata->message);
} }
PG_END_TRY(); PG_END_TRY();
} }
static text * static text *
sv2text(SV *sv) sv2text(SV *sv)
{ {
char *str = sv2cstr(sv); char *str = sv2cstr(sv);
return cstring_to_text(str); return cstring_to_text(str);
} }

@ -1516,7 +1516,7 @@ static PLyProcedure *
PLy_procedure_get(Oid fn_oid, bool is_trigger) PLy_procedure_get(Oid fn_oid, bool is_trigger)
{ {
HeapTuple procTup; HeapTuple procTup;
PLyProcedureEntry *entry; PLyProcedureEntry * volatile entry;
bool found; bool found;
procTup = SearchSysCache1(PROCOID, ObjectIdGetDatum(fn_oid)); procTup = SearchSysCache1(PROCOID, ObjectIdGetDatum(fn_oid));
@ -3234,7 +3234,7 @@ PLy_spi_prepare(PyObject *self, PyObject *args)
void *tmpplan; void *tmpplan;
volatile MemoryContext oldcontext; volatile MemoryContext oldcontext;
volatile ResourceOwner oldowner; volatile ResourceOwner oldowner;
int nargs; volatile int nargs;
if (!PyArg_ParseTuple(args, "s|O", &query, &list)) if (!PyArg_ParseTuple(args, "s|O", &query, &list))
return NULL; return NULL;
@ -3470,7 +3470,7 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
PG_TRY(); PG_TRY();
{ {
char *nulls; char * volatile nulls;
volatile int j; volatile int j;
if (nargs > 0) if (nargs > 0)

Loading…
Cancel
Save