app: fix infinite recursion crash in gimp_item_is_position_locked()

When checking if any linked item is position-locked in
gimp_item_linked_is_locked(), temporarily set the items to not being
linked, or gimp_item_real_is_position_locked() will call
gimp_item_linked_is_locked() again, and so on...
This commit is contained in:
Michael Natterer 2012-11-11 17:17:47 +01:00
parent fe19ad9706
commit acdf9bb29b
1 changed files with 10 additions and 5 deletions

View File

@ -49,15 +49,20 @@ gimp_item_linked_is_locked (const GimpItem *item)
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
for (l = list; l; l = g_list_next (l))
for (l = list; l && ! locked; l = g_list_next (l))
{
GimpItem *item = l->data;
/* temporarily set the item to not being linked, or we will
* run into a recursion because gimp_item_is_position_locked()
* call this function if the item is linked
*/
gimp_item_set_linked (item, FALSE, FALSE);
if (gimp_item_is_position_locked (item))
{
locked = TRUE;
break;
}
locked = TRUE;
gimp_item_set_linked (item, TRUE, FALSE);
}
g_list_free (list);