diff src/alloc.c @ 83163:8e4ea1e2c254

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-420 Tweak permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-421 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-422 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-423 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-424 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-425 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-426 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-203
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 28 Jun 2004 16:04:52 +0000
parents dbcd0af66869 a446552d2240
children a79c4db19c4f
line wrap: on
line diff
--- a/src/alloc.c	Thu Jun 24 07:44:13 2004 +0000
+++ b/src/alloc.c	Mon Jun 28 16:04:52 2004 +0000
@@ -591,6 +591,7 @@
   p->dogc = 0;
   xfree (p->pointer);
   p->pointer = 0;
+  free_misc (arg);
   return Qnil;
 }
 
@@ -2922,17 +2923,32 @@
 	  marker_block = new;
 	  marker_block_index = 0;
 	  n_marker_blocks++;
+	  total_free_markers += MARKER_BLOCK_SIZE;
 	}
       XSETMISC (val, &marker_block->markers[marker_block_index]);
       marker_block_index++;
     }
 
+  --total_free_markers;
   consing_since_gc += sizeof (union Lisp_Misc);
   misc_objects_consed++;
   XMARKER (val)->gcmarkbit = 0;
   return val;
 }
 
+/* Free a Lisp_Misc object */
+
+void
+free_misc (misc)
+     Lisp_Object misc;
+{
+  XMISC (misc)->u_marker.type = Lisp_Misc_Free;
+  XMISC (misc)->u_free.chain = marker_free_list;
+  marker_free_list = XMISC (misc);
+
+  total_free_markers++;
+}
+
 /* Return a Lisp_Misc_Save_Value object containing POINTER and
    INTEGER.  This is used to package C values to call record_unwind_protect.
    The unwind function can get the C values back using XSAVE_VALUE.  */
@@ -2979,12 +2995,7 @@
      Lisp_Object marker;
 {
   unchain_marker (XMARKER (marker));
-
-  XMISC (marker)->u_marker.type = Lisp_Misc_Free;
-  XMISC (marker)->u_free.chain = marker_free_list;
-  marker_free_list = XMISC (marker);
-
-  total_free_markers++;
+  free_misc (marker);
 }