Commit 0b96f00b authored by Fred Pierresteguy's avatar Fred Pierresteguy
Browse files

*** empty log message ***

parent b3eaa88e
......@@ -71,13 +71,14 @@ pick_hook (w, client_data, call_data)
}
/* creation functions */
static Widget
xlw_create_menubar (instance)
widget_instance* instance;
{
Widget widget;
widget_value *tem = (widget_value *) XtMalloc (sizeof (widget_value));
widget_value *tem = malloc_widget_value ();
/* _XtCreate is freeing the object we passed,
so make a copy that we free later. */
......@@ -89,7 +90,7 @@ xlw_create_menubar (instance)
XtNmenu, tem,
0);
XtFree (tem);
free_widget_value (tem);
XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance);
XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance);
......@@ -106,7 +107,7 @@ xlw_create_popup_menu (instance)
Widget widget;
widget_value *tem = (widget_value *) XtMalloc (sizeof (widget_value));
widget_value *tem = malloc_widget_value ();
/* _XtCreate is freeing the object we passed,
so make a copy that we free later. */
......@@ -119,7 +120,7 @@ xlw_create_popup_menu (instance)
XtNhorizontal, False,
0);
XtFree (tem);
free_widget_value (tem);
XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance);
......
......@@ -112,6 +112,8 @@ safe_free_str (s)
}
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 @@ malloc_widget_value ()
else
{
wv = (widget_value *) malloc (sizeof (widget_value));
malloc_cpt++;
}
memset (wv, 0, sizeof (widget_value));
return wv;
......@@ -140,8 +143,24 @@ free_widget_value (wv)
{
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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment