diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-04-29 18:06:41 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-04-29 18:06:41 -0700 |
commit | 371cac43187cce3b5cc4c1779ae059b2bafa29a0 (patch) | |
tree | 6291e84ea50166eb29d1f90bcc4359d4688a80aa /src/dbusbind.c | |
parent | d01a78266d12561b46777a2156914d12d8099c4f (diff) | |
download | emacs-371cac43187cce3b5cc4c1779ae059b2bafa29a0.tar.gz |
* 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) return; /* Unset session environment. */ - if (data != NULL && data == (void *) XPNTR (QCdbus_session_bus)) + if (SYMBOLP (QCdbus_session_bus) && XSYMBOL (QCdbus_session_bus) == data) { XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS"); unsetenv ("DBUS_SESSION_BUS_ADDRESS"); @@ -920,6 +920,8 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0, { DBusConnection *connection; + CHECK_SYMBOL (bus); + /* Open a connection to the bus. */ connection = xd_initialize (bus, TRUE); @@ -929,7 +931,7 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0, xd_add_watch, xd_remove_watch, xd_toggle_watch, - (void *) XPNTR (bus), NULL)) + XSYMBOL (bus), NULL)) XD_SIGNAL1 (build_string ("Cannot add watch functions")); /* Add bus to list of registered buses. */ @@ -1824,7 +1826,7 @@ xd_read_queued_messages (int fd, void *data, int for_read) if (data != NULL) while (!NILP (busp)) { - if (data == (void *) XPNTR (CAR_SAFE (busp))) + if (SYMBOLP (CAR_SAFE (busp)) && XSYMBOL (CAR_SAFE (busp)) == data) bus = CAR_SAFE (busp); busp = CDR_SAFE (busp); } |