Enlightenment CVS committal
Author : tsauerbeck
Project : e17
Module : libs/edje
Dir : e17/libs/edje/src/lib
Modified Files:
edje_program.c
Log Message:
fixed a memleak
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_program.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- edje_program.c 17 Jan 2004 13:09:35 -0000 1.25
+++ edje_program.c 4 Feb 2004 19:41:27 -0000 1.26
@@ -600,11 +600,25 @@
_edje_unblock(ed);
}
+static void _edje_emission_free(Edje_Emission *ee)
+{
+ if (!ee)
+ return;
+
+ if (ee->signal)
+ free(ee->signal);
+
+ if (ee->source)
+ free(ee->source);
+
+ free(ee);
+}
+
void
_edje_emit(Edje *ed, char *sig, char *src)
{
Evas_List *l;
- Edje_Emission *ee;
+ Edje_Emission *ee = NULL;
/* limit self-feeding loops in callbacks to 64 levels */
static int recursions = 0;
static int recursion_limit = 0;
@@ -614,10 +628,9 @@
while (ed->emissions)
{
ee = ed->emissions->data;
- free(ee->signal);
- free(ee->source);
- free(ee);
ed->emissions = evas_list_remove(ed->emissions, ee);
+
+ _edje_emission_free(ee);
}
return;
}
@@ -754,11 +767,15 @@
if (tmps) free(tmps);
tmps = NULL;
}
- free(ee->signal);
- free(ee->source);
- free(ee);
+
+ _edje_emission_free(ee);
+ ee = NULL;
}
break_prog:
+
+ if (ee)
+ _edje_emission_free(ee);
+
recursions--;
if (recursions == 0) recursion_limit = 0;
_edje_thaw(ed);
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs