| Karim BELABAS on Fri, 4 Jul 2003 21:36:42 +0200 (MEST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: bug in sum() and probably others |
On Tue, 1 Jul 2003, Bill Allombert wrote:
> On a x86,
>
> ? sum(i=2^32-10,2^32+10,1)
> %1 = 11
Fixed. [ t_INT not properly updated after (caught) overflow ]
> Looking at the code, it seems there are several bugs
> here.
Indeed. Here's a different one
(21:32) gp > sum(i=-2^32-10,-2^32+10,1)
%1 = 12
[ Fix is independent of the above... ]
> incpos() does not use the t_INT interface
Fixed. I've moved the code to the relevant kernel-specific files.
> and is probably not memory-safe
It is memory safe. These routines increment their argument in place.
They assume that
1) setloop(x) was called before trying to increment x in this way
2) less than 2^64 increments will be required
> and the gerepile() call does not protect a.
No need for this, a is outside the garbage zone.
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425 Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://www.parigp-home.de/ [PARI/GP]