summaryrefslogtreecommitdiff
path: root/src/contacts-contact.vala
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2013-06-12 11:10:28 +0200
committerAlexander Larsson <alexl@redhat.com>2013-06-12 11:10:28 +0200
commit1685c6a7a0937b82ead2a3e2d7c71facb8a0107e (patch)
treee2db0aad4b14e91cdf3b6d6f58fb23035e10715c /src/contacts-contact.vala
parentbcd4d0e66ac4997711c72a0eaa116a70c7f055c5 (diff)
downloadgnome-contacts-1685c6a7a0937b82ead2a3e2d7c71facb8a0107e.tar.gz
Contact: Make keep_widget_uptodate callback owned
Without this the callback data will not get reffed when this is called so it may later point to uninitialized memory. This happened to me when deleting a contact and then undoing that, since ContactSheet.update() had exited so the closure was freed but the keep_uptodate stuff still referenced it.
Diffstat (limited to 'src/contacts-contact.vala')
-rw-r--r--src/contacts-contact.vala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/contacts-contact.vala b/src/contacts-contact.vala
index f7f48ad..48c5197 100644
--- a/src/contacts-contact.vala
+++ b/src/contacts-contact.vala
@@ -1432,7 +1432,7 @@ public class Contacts.Contact : GLib.Object {
}
}
- public void keep_widget_uptodate (Widget w, Gtk.Callback callback) {
+ public void keep_widget_uptodate (Widget w, owned Gtk.Callback callback) {
callback(w);
ulong id = this.changed.connect ( () => { callback(w); });
w.destroy.connect (() => { this.disconnect (id); });