From cc836e7c845b2e4035382cc2cc73064bced55dc5 Mon Sep 17 00:00:00 2001 From: Massimo Valentini Date: Tue, 9 Jul 2013 19:41:52 +0200 Subject: [PATCH] Bug 703806: GIMP crashes when scaling an image during an image rescale, while spinning the main-loop, layer-groups preview generation used to start before their layers were fully rescaled, so it tried to access tiles that were not yet there (cherry picked from commit 3cc923d5a50287b2a7ab77dce381aabab3e37418) --- app/core/gimpimage-scale.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/core/gimpimage-scale.c b/app/core/gimpimage-scale.c index bab1c65224..dd3d274520 100644 --- a/app/core/gimpimage-scale.c +++ b/app/core/gimpimage-scale.c @@ -26,6 +26,7 @@ #include "gimp.h" #include "gimpcontainer.h" #include "gimpguide.h" +#include "gimpgrouplayer.h" #include "gimpimage.h" #include "gimpimage-guides.h" #include "gimpimage-item-list.h" @@ -155,7 +156,10 @@ gimp_image_scale (GimpImage *image, /* group layers are updated automatically */ if (gimp_viewable_get_children (GIMP_VIEWABLE (item))) - continue; + { + gimp_group_layer_suspend_resize (GIMP_GROUP_LAYER (item), FALSE); + continue; + } if (! gimp_item_scale_by_factors (item, img_scale_w, img_scale_h, @@ -170,6 +174,11 @@ gimp_image_scale (GimpImage *image, } } + for (list = all_layers; list; list = g_list_next (list)) + if (gimp_viewable_get_children (list->data)) + gimp_group_layer_resume_resize (list->data, FALSE); + + /* Scale all Guides */ for (list = gimp_image_get_guides (image); list;