summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Moya <rodrigo.moya@collabora.co.uk>2012-05-31 13:34:16 +0200
committerRodrigo Moya <rodrigo@gnome-db.org>2012-05-31 13:34:16 +0200
commitb2be05093cb9d2afa6348a05d35c3fab65e9fd52 (patch)
tree678d4efed550adcbc73c582301253ab50818e32c
parent09934fdcc74ccad9991a8c642edb8ece25b999ee (diff)
downloaddbus-b2be05093cb9d2afa6348a05d35c3fab65e9fd52.tar.gz
Allocate and store peer addresses in the hash table, not as pointers
-rw-r--r--dbus/dbus-transport-afbus.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/dbus/dbus-transport-afbus.c b/dbus/dbus-transport-afbus.c
index 4832b391..3789a95a 100644
--- a/dbus/dbus-transport-afbus.c
+++ b/dbus/dbus-transport-afbus.c
@@ -93,7 +93,12 @@ get_write_destination (int fd,
/* a message for a peer */
if (wkn_addresses_cache != NULL)
- peer = (dbus_uint64_t) _dbus_hash_table_lookup_string (wkn_addresses_cache, destination);
+ {
+ dbus_uint64_t *peer_pointer;
+
+ peer_pointer = (dbus_uint64_t *) _dbus_hash_table_lookup_string (wkn_addresses_cache, destination);
+ peer = *peer_pointer;
+ }
sock->sbus_addr.s_addr = peer;
@@ -229,13 +234,14 @@ afbus_message_received (DBusTransportSocket *socket_transport,
{
char *wkn;
dbus_uint64_t peer;
+ dbus_uint64_t *peer_pointer;
/* Update the cache */
if (wkn_addresses_cache == NULL)
{
wkn_addresses_cache = _dbus_hash_table_new (DBUS_HASH_STRING,
dbus_free,
- NULL);
+ dbus_free);
if (wkn_addresses_cache == NULL)
return;
}
@@ -244,9 +250,12 @@ afbus_message_received (DBusTransportSocket *socket_transport,
DBUS_TYPE_STRING, &wkn,
DBUS_TYPE_UINT64, &peer,
DBUS_TYPE_INVALID);
+
+ peer_pointer = dbus_new (dbus_uint64_t, 1);
+ *peer_pointer = peer;
_dbus_hash_table_insert_string (wkn_addresses_cache,
_dbus_strdup (wkn),
- (void *) peer);
+ (void *) peer_pointer);
}
}
}