I wrote:
> So I propose the attached. For ease of review, I've not re-indented
> the code that needs to move inside PG_TRY blocks. Also, I dropped the
> logic about pfree'ing the string buffers in PLy_elog_impl's PG_FINALLY
> block: that doesn't seem necessary, and continuing to do it would
> require making those things volatile which is notationally messy.
Pushed. After sleeping on it I decided that removing the pfree's
would be a poor tradeoff, as it's not clear how long those allocations
might survive otherwise. The extra "volatile" markers for "xmsg"
and "tbmsg" aren't that big a deal. Trying to mark "emsg" as volatile
would be problematic because none of the StringInfo routines are set
up to allow that, but it shouldn't be a problem because that struct
will surely be on the stack.
regards, tom lane