On Sat, Apr 19, 2014 at 12:43 AM, Glynn Clements
<gl...@gclements.plus.com> wrote:

>> 3) use setjmp()/longjmp()
>
> That is the sane option.
>
> But bear in mind that subsequently calling any GRASS function is
> entirely "at your own risk". A call to G_fatal_error() often means
> that internal data structures will contain garbarge.
>
> If you want to submit patches to perform clean-up in the event of
> fatal errors, they will presumably be accepted.
>
> Failing that, it may be advisable to have G_fatal_error() zero-out
> certain core data structures (e.g. R__) so that people don't make the
> mistake of trying to carry on as if nothing happened.

There is a problem in G_fatal_error():

    static int busy
    if (busy)
        exit(EXIT_FAILURE);
    busy = 1;

second G_fatal_error() call always exits.

The busy check is there for the case when print error routine itself
ends up with call to G_fatal_error()?

May be the busy variable made global and added a function to clear it?

Radim
_______________________________________________
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to