On ons, 2010-02-17 at 11:05 -0500, Tom Lane wrote: > All of the MemoryContextSwitchTo calls in plpython seem to be in > patterns like this: > > MemoryContext oldcontext; > > oldcontext = CurrentMemoryContext; > PG_TRY(); > { > ... do something ... > } > PG_CATCH(); > { > MemoryContextSwitchTo(oldcontext); > > Since oldcontext is only set in the one place, it really shouldn't > require "volatile" decoration, but maybe it does.
It is my understanding that local automatic variables may be clobbered by [sig]longjmp unless they are marked volatile. The PG_CATCH branch is reached by means of a [sig]longjmp. So that would mean that any variable that you want to use both before the TRY and inside the CATCH has to be volatile. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers