summaryrefslogtreecommitdiff
path: root/gtk/gtklabel.c
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2019-01-11 17:46:12 +0100
committerTimm Bäder <mail@baedert.org>2019-01-11 17:46:12 +0100
commit563b80d43491223aed3512c31eaa8e069ea3c076 (patch)
tree491200b9d40ab6fa20135ed18fb06b024c54733b /gtk/gtklabel.c
parentf4f0f0e6a0488146518266e20d07eb37aeb9b558 (diff)
downloadgtk+-563b80d43491223aed3512c31eaa8e069ea3c076.tar.gz
label: Skip updating link state if we have no layout
This can happen whenever the ::activate-link handler sets different markup on the label, causing all links to be recreated. In this case, the GtkLabelLink* passed to emit_activate_link is garbage after the g_signal_emit call and we shouldn't try to do anything with it. Fixes #1498
Diffstat (limited to 'gtk/gtklabel.c')
-rw-r--r--gtk/gtklabel.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 7ca9ad7cf3..1d4223aada 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -6173,6 +6173,11 @@ emit_activate_link (GtkLabel *label,
GtkStateFlags state;
g_signal_emit (label, signals[ACTIVATE_LINK], 0, link->uri, &handled);
+
+ /* signal handler might have invalidated the layout */
+ if (!priv->layout)
+ return;
+
if (handled && priv->track_links && !link->visited &&
priv->select_info && priv->select_info->links)
{