[gjs] object: Fix toggle check in dissociate_js_gobject()
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs] object: Fix toggle check in dissociate_js_gobject()
- Date: Sat, 1 Apr 2017 20:28:55 +0000 (UTC)
commit 7735dd20841ddbec33f30bca06d733620a037956
Author: Philip Chimento <philip endlessm com>
Date: Thu Mar 9 18:22:13 2017 -0800
object: Fix toggle check in dissociate_js_gobject()
If both a toggle up and toggle down were queued, we don't want to assert
here, since the object would be scheduled to get freed anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=778862
gi/object.cpp | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/gi/object.cpp b/gi/object.cpp
index f450d5d..0db0849 100644
--- a/gi/object.cpp
+++ b/gi/object.cpp
@@ -1388,6 +1388,7 @@ static void
disassociate_js_gobject(GObject *gobj)
{
ObjectInstance *priv = get_object_qdata(gobj);
+ bool had_toggle_down, had_toggle_up;
g_object_weak_unref(priv->gobj, wrapped_gobj_dispose_notify, priv);
@@ -1398,13 +1399,15 @@ disassociate_js_gobject(GObject *gobj)
* assertion.
* https://bugzilla.gnome.org/show_bug.cgi?id=778862
*/
- if (cancel_toggle_idle(gobj, TOGGLE_UP) ||
- cancel_toggle_idle(gobj, TOGGLE_DOWN))
+ had_toggle_down = cancel_toggle_idle(gobj, TOGGLE_DOWN);
+ had_toggle_up = cancel_toggle_idle(gobj, TOGGLE_UP);
+ if (had_toggle_down != had_toggle_up) {
g_critical("JS object wrapper for GObject %p (%s) is being released "
"while toggle references are still pending. This may happen "
"on exit in Gio.Application.vfunc_dbus_unregister(). If you "
"encounter it another situation, please report a GJS bug.",
gobj, G_OBJECT_TYPE_NAME(gobj));
+ }
invalidate_all_signals(priv);
release_native_object(priv);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]