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.
SVN revision: 12070
This commit is contained in:
parent
2b81462e95
commit
634caa3c9e
|
@ -127,6 +127,7 @@ _edje_message_new(Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id)
|
|||
em->type = type;
|
||||
em->id = id;
|
||||
em->edje->message.num++;
|
||||
_edje_ref(em->edje);
|
||||
return em;
|
||||
}
|
||||
|
||||
|
@ -242,6 +243,7 @@ _edje_message_free(Edje_Message *em)
|
|||
}
|
||||
}
|
||||
em->edje->message.num--;
|
||||
_edje_unref(em->edje);
|
||||
free(em);
|
||||
}
|
||||
|
||||
|
|
|
@ -1482,6 +1482,7 @@ _edje_thaw(Edje *ed)
|
|||
int
|
||||
_edje_block(Edje *ed)
|
||||
{
|
||||
_edje_ref(ed);
|
||||
ed->block++;
|
||||
return ed->block;
|
||||
}
|
||||
|
@ -1489,12 +1490,17 @@ _edje_block(Edje *ed)
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue