This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Fatal numbers bug



Current CVS versions of guile have a major bug in numbers.c: scm_flo0
is not protected from gc! (I spent an hour or two trying to find out
why the changes from ice-9 to guile were causing disgusting things to
happen with guile-gtk). This fix is against the current cvs tree, the
version of numbers.c in the boot-9.r4.tar.gz package can be fixed in
the same way. If you've been noticing wrong-type-arg errors with
#<freed cell foo; GC missed a reference>, this could very well be
what's causing the fuss.

Index: numbers.c
===================================================================
RCS file: /egcs/carton/cvsfiles/guile/guile-core/libguile/numbers.c,v
retrieving revision 1.26
diff -c -c -r1.26 numbers.c
*** numbers.c	1999/01/10 07:38:39	1.26
--- numbers.c	1999/02/03 05:16:19
***************
*** 4802,4807 ****
--- 4802,4808 ----
    SCM_REAL (scm_flo0) = 0.0;
    SCM_SETCAR (scm_flo0, scm_tc_dblr);
  #endif
+   scm_permanent_object(scm_flo0);
  #ifdef DBL_DIG
    scm_dblprec = (DBL_DIG > 20) ? 20 : DBL_DIG;
  #else

-- 
Greg