1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-27 22:56:53 +03:00

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.
This commit is contained in:
Tom Lane 2011-03-06 21:15:48 -05:00
parent dfe18f18d2
commit 4172bd8830
2 changed files with 22 additions and 21 deletions

View File

@ -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);
} }

View File

@ -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)