Subject: Re: bug#9581: 24.0.50; dbus-unregister-object fails if service is nil

From: Michael Albinus <[email-masked]>
Date: Sat, 24 Sep 2011 16:37:29 +0200

Julien Danjou <[email-masked]> writes:

> The patch is not enough. It fixes the precise case I reported, but this
> fails now:
>
> (setq db
>       (dbus-register-signal :session "some.service"
>                             "/org/gtk/Private/RemoteVolumeMonitor"
>                             "org.gtk.Private.RemoteVolumeMonitor" "VolumeAdded"
>                             'identity))
> (dbus-unregister-object db)

I've played exactly this example (replacing "some.service" by
"org.gtk.Private.GduVolumeMonitor" in order to have an existing
service). No problem.

> Debugger entered--Lisp error: (dbus-error "Match rule has a key with no subsequent '=' character")
>   dbus-call-method(:session "org.freedesktop.DBus" "/org/freedesktop/DBus" "org.freedesktop.DBus" "RemoveMatch" "Z")

Where does the "Z" comes from? There will never be such a rule, added by
AddMatch.

Did you compile also dbusbind.c before testing?

Could you apply (dbus-list-hash-table) before calling
`dbus-unregister-object', and show the result?

>> Reading the code, `dbus-registered-objects-table' has become an
>> unreadable format. Maybe we shall redesign the format, and move most of
>> the functionality from dbusbind.c to dbus.el. But that's something for
>> after-the-release.
>
> I totally agree with that. It needs to be reworked. :)

I'll prepare a patch. Locally, there are already some of them waiting
for after-the-release.

Best regards, Michael.