Lorenz Minder on Thu, 14 May 2009 04:17:58 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Broken exception handling in gp_read_str()


Hi,

I can't seem to catch errors of gp_read_str() with the TRY / CATCH
mechanism anymore.  I don't know when this broke, but it worked in PARI
2.4.2 and earlier.

Example:

#include <stdio.h>
#include <pari/pari.h>

int main(void)
{
	const size_t parisize = 8 * 1024 * 1024;
	const ulong maxprime = 500000;
	const ulong init_opts = INIT_JMPm | INIT_DFTm;
	pari_init_opts(parisize, maxprime, init_opts);

	GEN g = 0;
	CATCH(CATCH_ALL) {
		printf("Caught, very well.\n");
	} TRY {
		g = gp_read_str("2**13"); /* Note: 2**13 is a gp syntax
						error */
	} ENDCATCH
	printf("Survived. g = %p\n", g);

	return 0;
}

I would expect this to print "Caught, very well." and then "Survived. g
= (nil)", and then exit normally.  With the code in SVN it gives an
error message and terminates my program instead:

  ***   syntax error, unexpected '*': 2**13
  ***                                   ^---
  ***   Error in the PARI system. End of program.

After which I'm back to the shell.  Have the semantics of gp_read_str()
changed?

Best,
--Lorenz
-- 
Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss für nur 17,95 Euro/mtl.!* http://dslspecial.gmx.de/freedsl-surfflat/?ac=OM.AD.PD003K11308T4569a