Pavel,

First, please only quote the relevant parts of the email when
responding.

* Pavel Stehule (pavel.steh...@gmail.com) wrote:
> I used a ErrorContext because I wasn't sure so errcontext and similar
> function can work in different context. Now I look there and there
> should be well initialized ErrorDataStack, due
> 
> int
> set_errcontext_domain(const char *domain)
> {
> <------>ErrorData  *edata = &errordata[errordata_stack_depth];
> 
> <------>/* we don't bother incrementing recursion_depth */
> <------>CHECK_STACK_DEPTH();
> 
> <------>edata->context_domain = domain;
> 
> <------>return 0;
> }
> 
> but MemoryContext can be any - so probably some private context is ideal.

While set_errcontext_domain() doesn't care about the MemoryContext, per
se, the errcontext() macro further calls errcontext_msg() which is
currently set up to explicitly use ErrorContext.  Perhaps an elog.c
global to tell errcontext_msg() to not switch memory contexts, but what
happens if there's an error thrown by a callback function..?

        Thanks,

                Stephen

Attachment: signature.asc
Description: Digital signature

Reply via email to