comparison 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
comparison
equal deleted inserted replaced
5992:c072fed85d62 5993:5feb28cb62c8
110 { 110 {
111 if (s) free (s); 111 if (s) free (s);
112 } 112 }
113 113
114 static widget_value *widget_value_free_list = 0; 114 static widget_value *widget_value_free_list = 0;
115 static int malloc_cpt = 0;
116 static int malloc_cpt_id = 0;
115 117
116 widget_value * 118 widget_value *
117 malloc_widget_value () 119 malloc_widget_value ()
118 { 120 {
119 widget_value *wv; 121 widget_value *wv;
124 wv->free_list = 0; 126 wv->free_list = 0;
125 } 127 }
126 else 128 else
127 { 129 {
128 wv = (widget_value *) malloc (sizeof (widget_value)); 130 wv = (widget_value *) malloc (sizeof (widget_value));
131 malloc_cpt++;
129 } 132 }
130 memset (wv, 0, sizeof (widget_value)); 133 memset (wv, 0, sizeof (widget_value));
131 return wv; 134 return wv;
132 } 135 }
133 136
138 free_widget_value (wv) 141 free_widget_value (wv)
139 widget_value *wv; 142 widget_value *wv;
140 { 143 {
141 if (wv->free_list) 144 if (wv->free_list)
142 abort (); 145 abort ();
143 wv->free_list = widget_value_free_list; 146
144 widget_value_free_list = wv; 147 if (malloc_cpt > 20)
148 {
149 /* When the number of already allocated cells is too big,
150 We free it. */
151 malloc_cpt_id++;
152 free (wv);
153 if (malloc_cpt_id > 20)
154 {
155 malloc_cpt_id = 0;
156 malloc_cpt = 0;
157 }
158 }
159 else
160 {
161 wv->free_list = widget_value_free_list;
162 widget_value_free_list = wv;
163 }
145 } 164 }
146 165
147 static void 166 static void
148 free_widget_value_tree (wv) 167 free_widget_value_tree (wv)
149 widget_value *wv; 168 widget_value *wv;