[GRASS-dev] GRASS & QGIS: the future

Radim Blazek radim.blazek at gmail.com
Thu May 15 10:45:36 PDT 2014


On Sat, Apr 19, 2014 at 12:43 AM, Glynn Clements
<glynn at 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


More information about the grass-dev mailing list