diff lwlib/lwlib.c @ 5993:5feb28cb62c8

*** empty log message ***
author Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
date Fri, 18 Feb 1994 13:24:41 +0000
parents 4934e5381fb2
children b135bb2b4bfe
line wrap: on
line diff
--- a/lwlib/lwlib.c	Fri Feb 18 11:03:38 1994 +0000
+++ b/lwlib/lwlib.c	Fri Feb 18 13:24:41 1994 +0000
@@ -112,6 +112,8 @@
 }
 
 static widget_value *widget_value_free_list = 0;
+static int malloc_cpt = 0;
+static int malloc_cpt_id = 0;
 
 widget_value *
 malloc_widget_value ()
@@ -126,6 +128,7 @@
   else
     {
       wv = (widget_value *) malloc (sizeof (widget_value));
+      malloc_cpt++;
     }
   memset (wv, 0, sizeof (widget_value));
   return wv;
@@ -140,8 +143,24 @@
 {
   if (wv->free_list)
     abort ();
-  wv->free_list = widget_value_free_list;
-  widget_value_free_list = wv;
+
+  if (malloc_cpt > 20)
+    {
+      /* When the number of already allocated cells is too big,
+	 We free it.  */
+      malloc_cpt_id++;
+      free (wv);
+      if (malloc_cpt_id > 20)
+	{
+	  malloc_cpt_id = 0;
+	  malloc_cpt = 0;
+	}
+    }
+  else
+    {
+      wv->free_list = widget_value_free_list;
+      widget_value_free_list = wv;
+    }
 }
 
 static void