From 1cae01f7159d377f148e1d8aa631d5447217623e Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 24 Oct 2009 16:45:25 +0000 Subject: [PATCH] (xd_retrieve_arg): Handle DBUS_TYPE_INTnn and DBUS_TYPE_UINTnn separately to get proper sign extension. --- src/ChangeLog | 3 +++ src/dbusbind.c | 27 ++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1a2d994bad..a30b6580c8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2009-10-24 Andreas Schwab + * dbusbind.c (xd_retrieve_arg): Handle DBUS_TYPE_INTnn and + DBUS_TYPE_UINTnn separately to get proper sign extension. + * dired.c (Ffile_attributes): Simplify now that FIXNUM_OVERFLOW_P can properly handle unsigned types. (make_uid, make_gid): Removed. diff --git a/src/dbusbind.c b/src/dbusbind.c index 86ec866ac6..c2512e687c 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c @@ -616,6 +616,13 @@ xd_retrieve_arg (dtype, iter) } case DBUS_TYPE_INT16: + { + dbus_int16_t val; + dbus_message_iter_get_basic (iter, &val); + XD_DEBUG_MESSAGE ("%c %d", dtype, val); + return make_number (val); + } + case DBUS_TYPE_UINT16: { dbus_uint16_t val; @@ -625,19 +632,29 @@ xd_retrieve_arg (dtype, iter) } case DBUS_TYPE_INT32: + { + dbus_int32_t val; + dbus_message_iter_get_basic (iter, &val); + XD_DEBUG_MESSAGE ("%c %d", dtype, val); + return make_fixnum_or_float (val); + } + case DBUS_TYPE_UINT32: { - /* Assignment to EMACS_INT stops GCC whining about limited - range of data type. */ dbus_uint32_t val; - EMACS_INT val1; dbus_message_iter_get_basic (iter, &val); XD_DEBUG_MESSAGE ("%c %d", dtype, val); - val1 = val; - return make_fixnum_or_float (val1); + return make_fixnum_or_float (val); } case DBUS_TYPE_INT64: + { + dbus_int64_t val; + dbus_message_iter_get_basic (iter, &val); + XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val); + return make_fixnum_or_float (val); + } + case DBUS_TYPE_UINT64: { dbus_uint64_t val; -- 2.20.1