[gtk+/sdk/2965: 25/30] gtkoverlay: Fix issues with remove
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/sdk/2965: 25/30] gtkoverlay: Fix issues with remove
- Date: Sat, 11 Jul 2015 00:42:11 +0000 (UTC)
commit dc853d8ce88aefe945f6dc8cbbbd9f18a87c634c
Author: Alexander Larsson <alexl redhat com>
Date: Mon Jun 15 16:32:50 2015 +0200
gtkoverlay: Fix issues with remove
The iteration now progresses past a delete, so make sure we iterate
safely. Also, don't chain up if we removed a child.
gtk/gtkoverlay.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkoverlay.c b/gtk/gtkoverlay.c
index f5962a1..eb6ac04 100644
--- a/gtk/gtkoverlay.c
+++ b/gtk/gtkoverlay.c
@@ -497,13 +497,14 @@ gtk_overlay_remove (GtkContainer *container,
{
GtkOverlayPrivate *priv = GTK_OVERLAY (container)->priv;
GtkOverlayChild *child;
- GSList *children;
+ GSList *children, *next;
gboolean removed;
removed = FALSE;
- for (children = priv->children; children; children = children->next)
+ for (children = priv->children; children; children = next)
{
child = children->data;
+ next = children->next;
if (child->widget == widget)
{
@@ -524,7 +525,8 @@ gtk_overlay_remove (GtkContainer *container,
gtk_widget_child_notify (child->widget, "index");
}
- GTK_CONTAINER_CLASS (gtk_overlay_parent_class)->remove (container, widget);
+ if (!removed)
+ GTK_CONTAINER_CLASS (gtk_overlay_parent_class)->remove (container, widget);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]