use dynwind_begin and dynwind_end
[bpt/emacs.git] / src / dbusbind.c
index 9e15d7f..e8b0771 100644 (file)
@@ -387,8 +387,8 @@ xd_signature (char *signature, int dtype, int parent_type, Lisp_Object object)
       break;
 
     case DBUS_TYPE_BOOLEAN:
-      /* Every Emacs Lisp object serves as a boolean, so there's nothing
-        to check.  */
+      if (!EQ (object, Qt) && !EQ (object, Qnil))
+       wrong_type_argument (intern ("booleanp"), object);
       sprintf (signature, "%c", dtype);
       break;
 
@@ -946,7 +946,7 @@ xd_retrieve_arg (int dtype, DBusMessageIter *iter)
            dbus_message_iter_next (&subiter);
          }
        XD_DEBUG_MESSAGE ("%c %s", dtype, XD_OBJECT_TO_STRING (result));
-       RETURN_UNGCPRO (Fnreverse (result));
+       return Fnreverse (result);
       }
 
     default:
@@ -1534,7 +1534,7 @@ usage: (dbus-message-internal &rest REST)  */)
   dbus_message_unref (dmessage);
 
   /* Return the result.  */
-  RETURN_UNGCPRO (result);
+  return result;
 }
 
 /* Read one queued incoming message of the D-Bus BUS.
@@ -1740,22 +1740,16 @@ xd_read_queued_messages (int fd, void *data)
 void
 syms_of_dbusbind (void)
 {
+#include "dbusbind.x"
 
   DEFSYM (Qdbus__init_bus, "dbus--init-bus");
-  defsubr (&Sdbus__init_bus);
-
   DEFSYM (Qdbus_get_unique_name, "dbus-get-unique-name");
-  defsubr (&Sdbus_get_unique_name);
-
   DEFSYM (Qdbus_message_internal, "dbus-message-internal");
-  defsubr (&Sdbus_message_internal);
-
   DEFSYM (Qdbus_error, "dbus-error");
   Fput (Qdbus_error, Qerror_conditions,
        list2 (Qdbus_error, Qerror));
   Fput (Qdbus_error, Qerror_message,
        build_pure_c_string ("D-Bus error"));
-
   DEFSYM (QCdbus_system_bus, ":system");
   DEFSYM (QCdbus_session_bus, ":session");
   DEFSYM (QCdbus_timeout, ":timeout");