comparison lwlib/lwlib.c @ 424:11054d720c21 r21-2-20

Import from CVS: tag r21-2-20
author cvs
date Mon, 13 Aug 2007 11:26:11 +0200
parents 41dbb7a9d5f2
children
comparison
equal deleted inserted replaced
423:28d9c139be4c 424:11054d720c21
123 abort (); 123 abort ();
124 wv->free_list = widget_value_free_list; 124 wv->free_list = widget_value_free_list;
125 widget_value_free_list = wv; 125 widget_value_free_list = wv;
126 } 126 }
127 127
128 static void free_widget_value_tree (widget_value *wv);
129
130 static void 128 static void
131 free_widget_value_contents (widget_value *wv) 129 free_widget_value_contents (widget_value *wv)
132 { 130 {
133 if (wv->name) free (wv->name); 131 if (wv->name) free (wv->name);
134 if (wv->value) free (wv->value); 132 if (wv->value) free (wv->value);
153 if (wv->contents && (wv->contents != (widget_value*)1)) 151 if (wv->contents && (wv->contents != (widget_value*)1))
154 { 152 {
155 free_widget_value_tree (wv->contents); 153 free_widget_value_tree (wv->contents);
156 wv->contents = (widget_value *) 0xDEADBEEF; 154 wv->contents = (widget_value *) 0xDEADBEEF;
157 } 155 }
158 if (wv->args && wv->free_args) 156 if (wv->args && wv->nargs)
159 { 157 {
160 free (wv->args); 158 if (wv->free_args)
161 wv->args = (void *) 0xDEADBEEF; 159 free (wv->args);
160 wv->args = (ArgList) 0xDEADBEEF;
162 wv->nargs = 0; 161 wv->nargs = 0;
162 wv->free_args = 0;
163 } 163 }
164 if (wv->next) 164 if (wv->next)
165 { 165 {
166 free_widget_value_tree (wv->next); 166 free_widget_value_tree (wv->next);
167 wv->next = (widget_value *) 0xDEADBEEF; 167 wv->next = (widget_value *) 0xDEADBEEF;
168 } 168 }
169 } 169 }
170 170
171 static void 171 void
172 free_widget_value_tree (widget_value *wv) 172 free_widget_value_tree (widget_value *wv)
173 { 173 {
174 if (!wv) 174 if (!wv)
175 return; 175 return;
176 176
1324 addto[i + *offset] = wv->args[i]; 1324 addto[i + *offset] = wv->args[i];
1325 } 1325 }
1326 *offset += wv->nargs; 1326 *offset += wv->nargs;
1327 } 1327 }
1328 } 1328 }
1329