]> git.eshelyaron.com Git - emacs.git/commitdiff
dbusbind: Check required args following :type scratch/dbusbind-type-tests
authorDaiki Ueno <ueno@gnu.org>
Thu, 3 Sep 2015 09:19:12 +0000 (18:19 +0900)
committerDaiki Ueno <ueno@gnu.org>
Thu, 3 Sep 2015 09:20:31 +0000 (18:20 +0900)
* src/dbusbind.c (xd_build_message): If no argument follows a type
specification, pass Qnil as OBJECT argument of
xd_append_arg_with_type_spec.
* test/automated/dbus-tests.el
(dbus-test04-create-message-parameters): Remove a temporary
comment.

src/dbusbind.c
test/automated/dbus-tests.el

index 9747d88a5a9c663771fcf73da10f47b3201d2ff8..63f46726455d3cee00d5597f782a1952d9a6ca03 100644 (file)
@@ -1683,7 +1683,16 @@ xd_build_message (Lisp_Object caller, struct xd_message *xmessage,
     {
       if (EQ (args[count], QCdbus_type_type))
        {
-         xd_append_arg_with_type_spec (args[count+1], args[count+2], &iter);
+         /* At least one object must follow the `:type' symbol.  */
+         if (!(count+1 < nargs))
+           wrong_type_argument (intern ("D-Bus"), QCdbus_type_type);
+
+         /* It is possible that no argument follows a type
+            specification, when the type is an empty compound type.
+            Assume it as nil.  */
+         xd_append_arg_with_type_spec (args[count+1],
+                                       count+2 < nargs ? args[count+2] : Qnil,
+                                       &iter);
          count += 2;
        }
       else
index 69afaa324f73ced8b584096b3361e9c04a0bf1ce..e989f73e68ca474f8530310a8488ae3162da6573 100644 (file)
@@ -214,7 +214,6 @@ This includes initialization and closing the bus."
     (should (equal (plist-get message :args) '(((:array nil) nil))))
     (should (equal (plist-get message :signature) "au"))
     ;; Test explicit type specifications with `:type' keyword for empty array.
-    ;; DOES THIS WORK?
     (setq message (dbus--test-create-message-with-args
                    :type '(:array :uint32)))
     (should (equal (plist-get message :args) '(((:array nil) nil))))