Ciao,

Il 2021-06-12 16:49 Marco Bodrato ha scritto:
Anyway, for internal coherence, I think that we should at least check
that all the functions in the library that might "abort" do this using
an "exception". For this, I propose the attached patch.

That patch ("Handle overflow in mpz_type through errno") was pushed.

We still have at least two functions directly using an abort():
__gmp_exception, and __gmp_invalid_operation.

They live in two different files (errno.c and invalid.c respectively), that handle somehow differently how to rise() a signal. The first checks #ifdef SIGFPE, the second depends on #if HAVE_UNISTD_H, and #if ! HAVE_RAISE.

I'm tempted to remove the file invalid.c, and to keep errno.c only, with the function __gmp_invalid_operation() calling __gmp_exception as all the other exceptions do. Of course with a new GMP_ERROR_INVALID_FLOAT_OPERATION = 32 constant.

Any comment?


En passant: the previous patch removed the message printed to stderr. Should we recover it using the following?

void
__gmp_overflow_in_mpz (void)
{
  fprintf (stderr, "gmp: overflow in mpz type\n"); /*This line added.*/
  __gmp_exception (GMP_ERROR_MPZ_OVERFLOW);
}

Should we print a message also for the other exceptions in errno.c?

Ĝis,
m
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
https://gmplib.org/mailman/listinfo/gmp-devel

Reply via email to