summaryrefslogtreecommitdiff
path: root/libnotify/notification.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnotify/notification.c')
-rw-r--r--libnotify/notification.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libnotify/notification.c b/libnotify/notification.c
index 482ee3e..18d7203 100644
--- a/libnotify/notification.c
+++ b/libnotify/notification.c
@@ -739,12 +739,19 @@ proxy_g_signal_cb (GDBusProxy *proxy,
g_warning ("Received unknown action %s", action);
}
} else {
+ /* Some clients have assumed it is safe to unref the
+ * Notification at the end of their NotifyActionCallback
+ * so we add a temporary ref until we're done with it.
+ */
+ g_object_ref (notification);
+
notification->priv->activating = TRUE;
pair->cb (notification, (char *) action, pair->user_data);
notification->priv->activating = FALSE;
-
g_free (notification->priv->activation_token);
notification->priv->activation_token = NULL;
+
+ g_object_unref (notification);
}
} else if (g_strcmp0 (signal_name, "ActivationToken") == 0 &&
g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(us)"))) {