mirror of
https://github.com/brl/mutter.git
synced 2025-05-05 14:44:56 +00:00
Bug 1299 - clutter_score_remove will segmentation fault if
timelines are more than 52 and continue to remove them * clutter/clutter-score.c (traverse_children): Don't destroy the entry in the handler for REMOVE_BY_ID. It will be removed again anyway in the call to g_node_traverse. This was causing a crash. Thanks to zhangwei for spotting.
This commit is contained in:
parent
596d4628e6
commit
50868579a0
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2008-11-25 Neil Roberts <neil@linux.intel.com>
|
||||||
|
|
||||||
|
Bug 1299 - clutter_score_remove will segmentation fault if
|
||||||
|
timelines are more than 52 and continue to remove them
|
||||||
|
|
||||||
|
* clutter/clutter-score.c (traverse_children): Don't destroy the
|
||||||
|
entry in the handler for REMOVE_BY_ID. It will be removed again
|
||||||
|
anyway in the call to g_node_traverse. This was causing a
|
||||||
|
crash. Thanks to zhangwei for spotting.
|
||||||
|
|
||||||
2008-11-24 Neil Roberts <neil@linux.intel.com>
|
2008-11-24 Neil Roberts <neil@linux.intel.com>
|
||||||
|
|
||||||
Add a wrapper library to help testing without NPOTs.
|
Add a wrapper library to help testing without NPOTs.
|
||||||
|
@ -505,30 +505,17 @@ traverse_children (GNode *node,
|
|||||||
case REMOVE_BY_ID:
|
case REMOVE_BY_ID:
|
||||||
if (closure->d.id == entry->id)
|
if (closure->d.id == entry->id)
|
||||||
{
|
{
|
||||||
if (entry->complete_id)
|
/* Destroy all the child entries of this node */
|
||||||
{
|
|
||||||
g_signal_handler_disconnect (entry->timeline, entry->complete_id);
|
|
||||||
entry->complete_id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry->marker_id)
|
|
||||||
{
|
|
||||||
g_signal_handler_disconnect (entry->timeline, entry->marker_id);
|
|
||||||
entry->marker_id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (entry->timeline);
|
|
||||||
|
|
||||||
g_node_traverse (node,
|
g_node_traverse (node,
|
||||||
G_POST_ORDER,
|
G_POST_ORDER,
|
||||||
G_TRAVERSE_ALL,
|
G_TRAVERSE_ALL,
|
||||||
-1,
|
-1,
|
||||||
destroy_entry, NULL);
|
destroy_entry, NULL);
|
||||||
|
|
||||||
g_free (entry->marker);
|
/* Keep track of this node so that it will be destroyed
|
||||||
g_slice_free (ClutterScoreEntry, entry);
|
further up */
|
||||||
|
|
||||||
closure->result = node;
|
closure->result = node;
|
||||||
|
|
||||||
retval = TRUE;
|
retval = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user