| Iwao KIMURA on Wed, 02 Dec 1998 00:02:07 +0900 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: A very bad bug |
Hi developers,
From: Igor Schein <igor@txc.com>
Subject: A very bad bug
Date: Mon, 30 Nov 1998 17:17:16 -0500
> ? \k
> GP/PARI CALCULATOR Version 2.0.12 (alpha)
> UltraSparc (MicroSparc kernel) 32-bit version
> (readline enabled, extended help not available)
>
> Copyright (C) 1989-1998 by
> C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier.
>
> Type ? for help, \q to quit.
> Type ?12 for how to get moral (and possibly technical) support.
>
> realprecision = 28 significant digits
> seriesprecision = 16 significant terms
> format = g0.28
>
> parisize = 4000000, primelimit = 500000
> ? \q
> *** segmentation fault: bug in GP (please report).
>
> *** segmentation fault: bug in GP (please report).
This seems easy to fix:
--------------------
amaki: {197} diff -u src/gp/gp.c.orig src/gp/gp.c
--- src/gp/gp.c.orig Tue Dec 1 23:34:53 1998
+++ src/gp/gp.c Tue Dec 1 23:35:31 1998
@@ -1214,7 +1214,7 @@
gp_quit()
{
free_graph(); freeall();
- while (bufindex) free((void *)buflist[bufindex--]);
+ while (bufindex > -2) free((void *)buflist[bufindex--]);
if (INIT_SIG)
{
#ifdef SIGBUS
--------------------
The problem is, as far as I understand, bufindex is initialized by
sentinel value -1 in gp_preinit(), but this is overlooked in
gp_quit().
;# Iwao KIMURA ;#
;# Institute of Mathematics, ;#
;# University of TSUKUBA, IBARAKI, JAPAN. ;#