--- lisp/net/dbus.el.orig 2009-01-28 17:10:02.000000000 +0100 +++ list/net/dbus.el 2009-07-27 03:18:10.429481853 +0200 @@ -162,7 +162,7 @@ The result will be made available in `dbus-return-values-table'." (puthash (list (dbus-event-bus-name last-input-event) (dbus-event-serial-number last-input-event)) - (if (= (length args) 1) (car args) args) + args dbus-return-values-table)) (defun dbus-call-method-non-blocking @@ -184,8 +184,9 @@ 'dbus-call-method-non-blocking-handler args))) ;; Wait until `dbus-call-method-non-blocking-handler' has put the ;; result into `dbus-return-values-table'. - (while (not (gethash key dbus-return-values-table nil)) - (read-event nil nil 0.1)) + (let ((marker (make-symbol "marker"))) + (while (eq (gethash key dbus-return-values-table marker) marker) + (read-event nil nil 0.1))) ;; Cleanup `dbus-return-values-table'. Return the result. (prog1 @@ -370,7 +371,7 @@ (dbus-ignore-errors (apply 'dbus-method-return-internal (nth 1 event) (nth 3 event) (nth 4 event) - (if (consp result) result (list result)))))) + result)))) ;; Error handling. (dbus-error ;; Return an error message when it is a message call.