mirror of https://github.com/GNOME/gimp.git
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:
parent
fe19ad9706
commit
acdf9bb29b
|
@ -49,15 +49,20 @@ gimp_item_linked_is_locked (const GimpItem *item)
|
||||||
|
|
||||||
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
|
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;
|
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))
|
if (gimp_item_is_position_locked (item))
|
||||||
{
|
locked = TRUE;
|
||||||
locked = TRUE;
|
|
||||||
break;
|
gimp_item_set_linked (item, TRUE, FALSE);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_list_free (list);
|
g_list_free (list);
|
||||||
|
|
Loading…
Reference in New Issue