diff src/alloc.c @ 945:7924b28c57a4

[xemacs-hg @ 2002-08-01 08:38:32 by michaels] 2002-07-31 Didier Verna <didier@xemacs.org> * file-coding.c (make_coding_system_1): Add missing call to `xfree (newname)'. * fix memory leak introduced by 2002-04-14 Ben Wing <ben@xemacs.org>: alloc.c (Fmake_byte_code): don't xnew_array of size 0. (sweep_compiled_functions): define ADDITIONAL_FREE_compiled_function to free the args field when needed.
author michaels
date Thu, 01 Aug 2002 08:38:48 +0000
parents 345b7d75cab4
children 25e260cb7994
line wrap: on
line diff
--- a/src/alloc.c	Thu Aug 01 08:33:11 2002 +0000
+++ b/src/alloc.c	Thu Aug 01 08:38:48 2002 +0000
@@ -1537,7 +1537,8 @@
 	}
     }
   
-    f->args = xnew_array (Lisp_Object, totalargs);
+    if (totalargs)
+      f->args = xnew_array (Lisp_Object, totalargs);
 
     {
       LIST_LOOP_2 (arg, arglist)
@@ -3621,7 +3622,8 @@
 sweep_compiled_functions (void)
 {
 #define UNMARK_compiled_function(ptr) UNMARK_RECORD_HEADER (&((ptr)->lheader))
-#define ADDITIONAL_FREE_compiled_function(ptr)
+#define ADDITIONAL_FREE_compiled_function(ptr) \
+  if (ptr->args_in_array) xfree (ptr->args)
 
   SWEEP_FIXED_TYPE_BLOCK (compiled_function, Lisp_Compiled_Function);
 }