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
This commit is contained in:
Timm Bäder 2019-01-11 17:46:12 +01:00
parent f4f0f0e6a0
commit 563b80d434

View File

@ -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)
{