; Add a FIXME regarding the GMP memory allocation functions.

* src/bignum.c (init_bignum): Add a warning about the technically
incorrect use of the GMP memory allocation functions.
This commit is contained in:
Philipp Stephani 2021-12-13 18:28:13 +01:00
parent b30b33ed9b
commit ae169bda2c

View file

@ -53,6 +53,15 @@ init_bignum (void)
{
eassert (mp_bits_per_limb == GMP_NUMB_BITS);
integer_width = 1 << 16;
/* FIXME: The Info node `(gmp) Custom Allocation' states: "No error
return is allowed from any of these functions, if they return
then they must have performed the specified operation. [...]
There's currently no defined way for the allocation functions to
recover from an error such as out of memory, they must terminate
program execution. A 'longjmp' or throwing a C++ exception will
have undefined results." But xmalloc and xrealloc do call
'longjmp'. */
mp_set_memory_functions (xmalloc, xrealloc_for_gmp, xfree_for_gmp);
for (int i = 0; i < ARRAYELTS (mpz); i++)