| Dirk Laurie on Wed, 06 Apr 2011 12:34:51 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Trapping errors in library mode |
When calling the Pari library from C, I don't want my program
to exit when I do something silly like dividing by zero. So
I initialize not by pari_init but by pari_init_opts, omitting
INIT_JMPm from the list of options. This works, in the sense
that I no longer get
*** division by zero
*** Error in the PARI system. End of program.
Instead, I get (under Linux)
*** division by zero
Segmentation fault
which not everybody will agree is much nicer.
The libpari documentation has nothing else on INIT_JMPm.
So I peeked in the source code. I _think_ I should write
a routine headed
int my_exception_handler(long numerr)
using gp_exception_handler as a model, and say
default_exception_handler = my_exception_handler;
However, exploiting undocumented features by reverse-engineering
code is a _bad_ idea, so I'm asking here whether this is the
canonical way.
Dirk Laurie