> >> AFAICS it is appropriate to move the sigsetjmp and 
> >> setup_cancel_handler calls in front of the per-line loop inside 
> >> MainLoop --- can anyone see a reason not to?
> 
> > hm. mainloop is re-entrant, right?  That means each \i 
> would reset the 
> > handler...what is downside to keeping global flag?
> 
> Ah, right, and in fact I'd missed the comment at line 325 
> pointing out that we're relying on the sigsetjmp to be 
> re-executed every time through.  That could be improved on, 
> likely, but not right before a release.
> 
> Does the flag need to be global?  I'm thinking
> 
>   void
>   setup_cancel_handler(void)
>   {
> +     static bool done = false;
> +
> +     if (!done)
>               SetConsoleCtrlHandler(consoleHandler, TRUE);
> +     done = true;
>   }
> 

Seems like a simple enough solution, don't see why it shouldn't work. As
long as psql is single-threaded, which it is...
(Actually, that code seems to re-set done=true on every call which seems
unnecessary - but that might be optimised away, I guess)

//Magnus


---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to