diff options
| author | Paul Eggert | 2011-04-29 18:06:41 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-04-29 18:06:41 -0700 |
| commit | 371cac43187cce3b5cc4c1779ae059b2bafa29a0 (patch) | |
| tree | 6291e84ea50166eb29d1f90bcc4359d4688a80aa /src/dbusbind.c | |
| parent | d01a78266d12561b46777a2156914d12d8099c4f (diff) | |
| download | emacs-371cac43187cce3b5cc4c1779ae059b2bafa29a0.tar.gz emacs-371cac43187cce3b5cc4c1779ae059b2bafa29a0.zip | |
* dbusbind.c: Do not use XPNTR on a value that may be an integer.
Reported by Stefan Monnier in
<http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00919.html>.
(xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages): Use
SYMBOLP-guarded XSYMBOL, not XPNTR.
Diffstat (limited to 'src/dbusbind.c')
| -rw-r--r-- | src/dbusbind.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/dbusbind.c b/src/dbusbind.c index 06feec3e792..76035341540 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c | |||
| @@ -892,7 +892,7 @@ xd_remove_watch (DBusWatch *watch, void *data) | |||
| 892 | return; | 892 | return; |
| 893 | 893 | ||
| 894 | /* Unset session environment. */ | 894 | /* Unset session environment. */ |
| 895 | if (data != NULL && data == (void *) XPNTR (QCdbus_session_bus)) | 895 | if (SYMBOLP (QCdbus_session_bus) && XSYMBOL (QCdbus_session_bus) == data) |
| 896 | { | 896 | { |
| 897 | XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS"); | 897 | XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS"); |
| 898 | unsetenv ("DBUS_SESSION_BUS_ADDRESS"); | 898 | unsetenv ("DBUS_SESSION_BUS_ADDRESS"); |
| @@ -920,6 +920,8 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0, | |||
| 920 | { | 920 | { |
| 921 | DBusConnection *connection; | 921 | DBusConnection *connection; |
| 922 | 922 | ||
| 923 | CHECK_SYMBOL (bus); | ||
| 924 | |||
| 923 | /* Open a connection to the bus. */ | 925 | /* Open a connection to the bus. */ |
| 924 | connection = xd_initialize (bus, TRUE); | 926 | connection = xd_initialize (bus, TRUE); |
| 925 | 927 | ||
| @@ -929,7 +931,7 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0, | |||
| 929 | xd_add_watch, | 931 | xd_add_watch, |
| 930 | xd_remove_watch, | 932 | xd_remove_watch, |
| 931 | xd_toggle_watch, | 933 | xd_toggle_watch, |
| 932 | (void *) XPNTR (bus), NULL)) | 934 | XSYMBOL (bus), NULL)) |
| 933 | XD_SIGNAL1 (build_string ("Cannot add watch functions")); | 935 | XD_SIGNAL1 (build_string ("Cannot add watch functions")); |
| 934 | 936 | ||
| 935 | /* Add bus to list of registered buses. */ | 937 | /* Add bus to list of registered buses. */ |
| @@ -1824,7 +1826,7 @@ xd_read_queued_messages (int fd, void *data, int for_read) | |||
| 1824 | if (data != NULL) | 1826 | if (data != NULL) |
| 1825 | while (!NILP (busp)) | 1827 | while (!NILP (busp)) |
| 1826 | { | 1828 | { |
| 1827 | if (data == (void *) XPNTR (CAR_SAFE (busp))) | 1829 | if (SYMBOLP (CAR_SAFE (busp)) && XSYMBOL (CAR_SAFE (busp)) == data) |
| 1828 | bus = CAR_SAFE (busp); | 1830 | bus = CAR_SAFE (busp); |
| 1829 | busp = CDR_SAFE (busp); | 1831 | busp = CDR_SAFE (busp); |
| 1830 | } | 1832 | } |