Mercurial > emacs
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; |