Enlightenment CVS committal Author : rephorm Project : e17 Module : libs/edje
Dir : e17/libs/edje/src/lib Modified Files: edje_message_queue.c edje_util.c Log Message: ref and unref the edje when blocking/unblocking and creating/deleting messages to avoid accessing free'd memory if an edje is deleted from an edje signal callback. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_message_queue.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- edje_message_queue.c 19 Oct 2004 09:56:14 -0000 1.11 +++ edje_message_queue.c 30 Oct 2004 02:30:55 -0000 1.12 @@ -127,6 +127,7 @@ em->type = type; em->id = id; em->edje->message.num++; + _edje_ref(em->edje); return em; } @@ -242,6 +243,7 @@ } } em->edje->message.num--; + _edje_unref(em->edje); free(em); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_util.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- edje_util.c 27 Oct 2004 19:24:42 -0000 1.43 +++ edje_util.c 30 Oct 2004 02:30:55 -0000 1.44 @@ -1482,6 +1482,7 @@ int _edje_block(Edje *ed) { + _edje_ref(ed); ed->block++; return ed->block; } @@ -1489,12 +1490,17 @@ int _edje_unblock(Edje *ed) { + int ret = 0; + if (!ed) return; + ed->block--; if (ed->block == 0) { ed->block_break = 0; } - return ed->block; + ret = ed->block; + _edje_unref(ed); + return ret; } int ------------------------------------------------------- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs