Declare a couple of variables inside not outside a PG_TRY block.

I went through the buildfarm's reports of "warning: variable 'foo'
might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]".  As usual,
none of them are live problems according to my understanding of the
effects of setjmp/longjmp, to wit that local variables might revert
to their values as of PG_TRY entry, due to being kept in registers.
But I did happen to notice that XmlTableGetValue's "cstr" variable
doesn't need to be declared outside the PG_TRY block at all (thus
giving further proof that the -Wclobbered warning has little
connection to real problems).  We might as well move it inside,
and "cur" too, in hopes of eliminating one of the bogus warnings.
pull/194/head
Tom Lane 9 months ago
parent 530f89e648
commit bf9165bb0c
  1. 10
      src/backend/utils/adt/xml.c

@ -4926,10 +4926,8 @@ XmlTableGetValue(TableFuncScanState *state, int colnum,
Oid typid, int32 typmod, bool *isnull) Oid typid, int32 typmod, bool *isnull)
{ {
#ifdef USE_LIBXML #ifdef USE_LIBXML
XmlTableBuilderData *xtCxt;
Datum result = (Datum) 0; Datum result = (Datum) 0;
xmlNodePtr cur; XmlTableBuilderData *xtCxt;
char *cstr = NULL;
volatile xmlXPathObjectPtr xpathobj = NULL; volatile xmlXPathObjectPtr xpathobj = NULL;
xtCxt = GetXmlTableBuilderPrivateData(state, "XmlTableGetValue"); xtCxt = GetXmlTableBuilderPrivateData(state, "XmlTableGetValue");
@ -4943,13 +4941,15 @@ XmlTableGetValue(TableFuncScanState *state, int colnum,
*isnull = false; *isnull = false;
cur = xtCxt->xpathobj->nodesetval->nodeTab[xtCxt->row_count - 1];
Assert(xtCxt->xpathscomp[colnum] != NULL); Assert(xtCxt->xpathscomp[colnum] != NULL);
PG_TRY(); PG_TRY();
{ {
xmlNodePtr cur;
char *cstr = NULL;
/* Set current node as entry point for XPath evaluation */ /* Set current node as entry point for XPath evaluation */
cur = xtCxt->xpathobj->nodesetval->nodeTab[xtCxt->row_count - 1];
xtCxt->xpathcxt->node = cur; xtCxt->xpathcxt->node = cur;
/* Evaluate column path */ /* Evaluate column path */

Loading…
Cancel
Save