summaryrefslogtreecommitdiff
path: root/src/dbusbind.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2011-04-29 18:06:41 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2011-04-29 18:06:41 -0700
commit371cac43187cce3b5cc4c1779ae059b2bafa29a0 (patch)
tree6291e84ea50166eb29d1f90bcc4359d4688a80aa /src/dbusbind.c
parentd01a78266d12561b46777a2156914d12d8099c4f (diff)
downloademacs-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.c8
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);
}