emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 09f381d70d8: Fix wildcard signals in dbusbind.c


From: Michael Albinus
Subject: master 09f381d70d8: Fix wildcard signals in dbusbind.c
Date: Sun, 31 Mar 2024 14:00:13 -0400 (EDT)

branch: master
commit 09f381d70d8852d90cdd3c8d7e1e2786dbc61f92
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>

    Fix wildcard signals in dbusbind.c
    
    * src/dbusbind.c (xd_read_message_1): Handle registered signals
    with wildcards.  (Bug#69926)
---
 src/dbusbind.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/dbusbind.c b/src/dbusbind.c
index 7069e27e3eb..0441b07a3b2 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -1689,6 +1689,22 @@ xd_read_message_1 (DBusConnection *connection, 
Lisp_Object bus)
                   bus, build_string (interface), build_string (member));
       value = Fgethash (key, Vdbus_registered_objects_table, Qnil);
 
+      /* A signal could be registered with a nil interface or member.  */
+      if (mtype == DBUS_MESSAGE_TYPE_SIGNAL)
+       {
+         key = list4 (QCsignal, bus, Qnil, build_string (member));
+         value = CALLN (Fappend, value,
+                        Fgethash (key, Vdbus_registered_objects_table, Qnil));
+
+         key = list4 (QCsignal, bus, build_string (interface), Qnil);
+         value = CALLN (Fappend, value,
+                        Fgethash (key, Vdbus_registered_objects_table, Qnil));
+
+         key = list4 (QCsignal, bus, Qnil, Qnil);
+         value = CALLN (Fappend, value,
+                        Fgethash (key, Vdbus_registered_objects_table, Qnil));
+       }
+
       /* Loop over the registered functions.  Construct an event.  */
       for (; !NILP (value); value = CDR_SAFE (value))
        {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]