Merge lp:~mterry/libdbusmenu/749609 into lp:libdbusmenu/0.5
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 289 | ||||
Proposed branch: | lp:~mterry/libdbusmenu/749609 | ||||
Merge into: | lp:libdbusmenu/0.5 | ||||
Diff against target: |
29 lines (+5/-0) 1 file modified
libdbusmenu-glib/client.c (+5/-0) |
||||
To merge this branch: | bzr merge lp:~mterry/libdbusmenu/749609 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
DBus Menu Team | Pending | ||
Review via email:
|
Description of the change
When looking at bug 749609, I realized that what was happening was that the menuproxy object was living longer than the client object. So it's callbacks were still happening and trying to access dead client object memory.
So one thing I did to reduce bug surface area was to disconnect all signals with the client object as callback data (there are three such callbacks in client.c).
Secondly, I looked at why the menuproxy might be surviving longer than the client. While async calls are ongoing, the menuproxy has an additional ref, and I started looking there. Most of the async calls ref the client object for the lifetime of the call to avoid this problem, but one async call didn't (the "Event" call), so I added a ref there.