* Fix bug caused by frame size overflowing its field.
authorNeil Jerram <neil@ossau.uklinux.net>
Fri, 8 Mar 2002 13:07:50 +0000 (13:07 +0000)
committerNeil Jerram <neil@ossau.uklinux.net>
Fri, 8 Mar 2002 13:07:50 +0000 (13:07 +0000)
libguile/ChangeLog
libguile/debug.h
libguile/eval.c

index 66d68ae..8bda007 100644 (file)
@@ -1,3 +1,12 @@
+2002-03-08  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
+       of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
+
+       * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
+       debug.status.  It isn't needed, and it can overflow the bits
+       reserved for it (which may lead to a segv or a GC abort).
+
 2002-03-02  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'.  Removed
index f705926..da7cad6 100644 (file)
@@ -141,7 +141,7 @@ SCM_API scm_t_debug_frame *scm_last_debug_frame;
 #define SCM_TRACED_FRAME (1L << 8)
 #define SCM_ARGS_READY   (1L << 7)
 #define SCM_DOVERFLOW    (1L << 6)
-#define SCM_MAX_FRAME_SIZE 63 /* also used as a mask for the size field */
+#define SCM_MAX_FRAME_SIZE 63
 
 #define SCM_FRAMETYPE    (3L << 11)
 
index 6167b5b..c4dc8e6 100644 (file)
@@ -1899,7 +1899,7 @@ SCM_CEVAL (SCM x, SCM env)
   scm_t_debug_frame debug;
   scm_t_debug_info *debug_info_end;
   debug.prev = scm_last_debug_frame;
-  debug.status = scm_debug_eframe_size;
+  debug.status = 0;
   /*
    * The debug.vect contains twice as much scm_t_debug_info frames as the
    * user has specified with (debug-set! frames <n>).