| Dirk Laurie on Wed, 06 Apr 2011 23:00:22 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Trapping errors in library mode |
On Wed, Apr 06, 2011 at 12:07:40PM +0200, Dirk Laurie wrote:
> When calling the Pari library from C, I don't want my program
> to exit when I do something silly like dividing by zero.
and on Wed, 6 Apr 2011 13:36:04 +0200, Bill Allombert replied:
> I suppose you are using PARI 2.3. In that case, the proper way is to set
> INIT_JMPm and to call setjmp(GP_DATA->env) somewhere in your code to
> initialize GP_DATA->env. In case of an error, PARI will do
> longjmp(GP_DATA->env).
I'm calling Pari via C from Lua, and did it this way:
if (1 && setjmp(GP_DATA->env)) luaL_argerror(L,k,"Pari error");
This works, of course after putting into my program this line:
#include <pari/paripriv.h>
The error message is now very satisfactory:
> pari("1/0")
*** division by zero
stdin:1: bad argument #2 to 'pari' (Pari error)
Question though: will this still work in PARI 2.4, or must I then
use the new method?
Thanks!
Dirk