aboutsummaryrefslogtreecommitdiffstats
path: root/src/dbusbind.c
diff options
context:
space:
mode:
authorAndreas Schwab2009-10-24 16:45:25 +0000
committerAndreas Schwab2009-10-24 16:45:25 +0000
commit1cae01f7159d377f148e1d8aa631d5447217623e (patch)
treeda189282ac3a465d6f17c20819f0cb8797e56ea2 /src/dbusbind.c
parent58a128895203804c027b61cefe32c32e16904b57 (diff)
downloademacs-1cae01f7159d377f148e1d8aa631d5447217623e.tar.gz
emacs-1cae01f7159d377f148e1d8aa631d5447217623e.zip
(xd_retrieve_arg): Handle DBUS_TYPE_INTnn and
DBUS_TYPE_UINTnn separately to get proper sign extension.
Diffstat (limited to 'src/dbusbind.c')
-rw-r--r--src/dbusbind.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 86ec866ac6a..c2512e687c7 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -616,6 +616,13 @@ xd_retrieve_arg (dtype, iter)
616 } 616 }
617 617
618 case DBUS_TYPE_INT16: 618 case DBUS_TYPE_INT16:
619 {
620 dbus_int16_t val;
621 dbus_message_iter_get_basic (iter, &val);
622 XD_DEBUG_MESSAGE ("%c %d", dtype, val);
623 return make_number (val);
624 }
625
619 case DBUS_TYPE_UINT16: 626 case DBUS_TYPE_UINT16:
620 { 627 {
621 dbus_uint16_t val; 628 dbus_uint16_t val;
@@ -625,19 +632,29 @@ xd_retrieve_arg (dtype, iter)
625 } 632 }
626 633
627 case DBUS_TYPE_INT32: 634 case DBUS_TYPE_INT32:
635 {
636 dbus_int32_t val;
637 dbus_message_iter_get_basic (iter, &val);
638 XD_DEBUG_MESSAGE ("%c %d", dtype, val);
639 return make_fixnum_or_float (val);
640 }
641
628 case DBUS_TYPE_UINT32: 642 case DBUS_TYPE_UINT32:
629 { 643 {
630 /* Assignment to EMACS_INT stops GCC whining about limited
631 range of data type. */
632 dbus_uint32_t val; 644 dbus_uint32_t val;
633 EMACS_INT val1;
634 dbus_message_iter_get_basic (iter, &val); 645 dbus_message_iter_get_basic (iter, &val);
635 XD_DEBUG_MESSAGE ("%c %d", dtype, val); 646 XD_DEBUG_MESSAGE ("%c %d", dtype, val);
636 val1 = val; 647 return make_fixnum_or_float (val);
637 return make_fixnum_or_float (val1);
638 } 648 }
639 649
640 case DBUS_TYPE_INT64: 650 case DBUS_TYPE_INT64:
651 {
652 dbus_int64_t val;
653 dbus_message_iter_get_basic (iter, &val);
654 XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val);
655 return make_fixnum_or_float (val);
656 }
657
641 case DBUS_TYPE_UINT64: 658 case DBUS_TYPE_UINT64:
642 { 659 {
643 dbus_uint64_t val; 660 dbus_uint64_t val;