Summary: | test suite: test-cli-group fails | ||
---|---|---|---|
Product: | Telepathy | Reporter: | Debarshi Ray <rishi.is> |
Component: | tp-glib | Assignee: | Telepathy bugs list <telepathy-bugs> |
Status: | RESOLVED FIXED | QA Contact: | Telepathy bugs list <telepathy-bugs> |
Severity: | blocker | ||
Priority: | medium | Keywords: | patch |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
URL: | http://cgit.collabora.com/git/user/wjt/telepathy-glib.git/commit/?h=41470-upgrade-no-contacts | ||
Whiteboard: | review+ | ||
i915 platform: | i915 features: | ||
Attachments: | channel-contacts: guard against no-op updates |
Description
Debarshi Ray
2011-10-05 02:25:59 UTC
Created attachment 52170 [details] [review] channel-contacts: guard against no-op updates process_contacts_queue() can already cope with ContactsQueueItems in the queue which do not actually have any contacts to prepare. As a comment in the function describes, we still go through the motions of enqueuing a preparation/upgrade operation to avoid reordering events. However, previously the function assumed that if any of the three arrays (of contact objects, ids, or handles) were non-NULL, then they would be non-empty. This assumption is false, as <https://bugs.freedesktop.org/show_bug.cgi?id=41470> illustrates. The concrete example in that bug is an emission of MembersChanged, with all arrays except Removed empty, and Actor set to 0. We don't bother preparing contacts which are removed; so _tp_channel_contacts_queue_prepare_async() is called with an empty array of contacts. There are a few other signals which can lead to this situation. So this patch makes process_contacts_queue() do the right thing if the arrays are present but empty. (Previously all three paths would assert in this situation.) Fixes: <https://bugs.freedesktop.org/show_bug.cgi?id=41470> Here's a fix. r+ Thanks, merged, will be in a release shortly. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.