bug in gmp_printf (?)
marc.glisse at inria.fr
Wed Aug 17 23:44:03 CEST 2011
On Wed, 17 Aug 2011, Torbjorn Granlund wrote:
> test=doprntf.c:128 GNU MP assertion failed: (p-)conv == 1 && p->prec ...
> I would be grateful if some other GMP developer could help with this.
> The bug is for real, to reproduce configure with --enable-assert. I
> haven't analysed if the ASSERT is wrong, or if it is a more serious
> All relevant code is a few lines in printf/doprntf.c.
The code has 2 cases: f<1 and f>=1. To print a number <1, it assumes it
will write something like .0000xxx (nothing before the dot). Except that
rounding may turn a number <1 into exactly 1. But since you are only
writing "1" in that case, it seems you always have enough space for that.
Assuming that is indeed what is going on (I really didn't check deep
enough), I'm not sure what to do, maybe add a comment and add a || check
for s "1" and exp 1.
More information about the gmp-bugs