From 3d16152fd30f2570ad8e9bb2427045e6fd317ce3 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 26 Feb 2007 13:44:45 +0000 Subject: More changes do use glib memory allocation --- common/dbus-helper.c | 16 ++++----------- common/dbus.c | 58 ++++++++++++++-------------------------------------- hcid/dbus-adapter.c | 2 +- hcid/dbus-database.c | 12 +++++------ hcid/dbus-hci.c | 26 +++++++++++------------ hcid/dbus-manager.c | 2 +- hcid/dbus-security.c | 12 +++++------ hcid/dbus-test.c | 4 ++-- 8 files changed, 47 insertions(+), 85 deletions(-) diff --git a/common/dbus-helper.c b/common/dbus-helper.c index 64b00cd8..7c14952b 100644 --- a/common/dbus-helper.c +++ b/common/dbus-helper.c @@ -90,7 +90,7 @@ static void generic_unregister(DBusConnection *connection, void *user_data) if (data->unregister_function) data->unregister_function(connection, data->user_data); - free(data); + g_free(data); } static struct interface_data *find_interface(GSList *interfaces, @@ -153,11 +153,7 @@ dbus_bool_t dbus_connection_create_object_path(DBusConnection *connection, { struct generic_data *data; - data = malloc(sizeof(*data)); - if (!data) - return FALSE; - - memset(data, 0, sizeof(*data)); + data = g_new0(struct generic_data, 1); data->user_data = user_data; data->unregister_function = function; @@ -167,7 +163,7 @@ dbus_bool_t dbus_connection_create_object_path(DBusConnection *connection, if (dbus_connection_register_object_path(connection, path, &generic_table, data) == FALSE) { - free(data); + g_free(data); return FALSE; } @@ -193,11 +189,7 @@ dbus_bool_t dbus_connection_register_interface(DBusConnection *connection, (void *) &data) == FALSE) return FALSE; - iface = malloc(sizeof(*iface)); - if (!iface) - return FALSE; - - memset(iface, 0, sizeof(*iface)); + iface = g_new0(struct interface_data, 1); iface->interface = interface; iface->methods = methods; diff --git a/common/dbus.c b/common/dbus.c index bc1125fa..6cf4b192 100644 --- a/common/dbus.c +++ b/common/dbus.c @@ -110,14 +110,11 @@ static void name_data_free(struct name_data *data) GSList *l; for (l = data->callbacks; l != NULL; l = l->next) - free(l->data); + g_free(l->data); g_slist_free(data->callbacks); - - if (data->name) - free(data->name); - - free(data); + g_free(data->name); + g_free(data); } static int name_data_add(const char *name, name_cb_t func, void *user_data) @@ -126,9 +123,7 @@ static int name_data_add(const char *name, name_cb_t func, void *user_data) struct name_data *data = NULL; struct name_callback *cb = NULL; - cb = malloc(sizeof(struct name_callback)); - if (!cb) - goto failed; + cb = g_new(struct name_callback, 1); cb->func = func; cb->user_data = user_data; @@ -139,30 +134,15 @@ static int name_data_add(const char *name, name_cb_t func, void *user_data) goto done; } - data = malloc(sizeof(struct name_data)); - if (!data) - goto failed; - - memset(data, 0, sizeof(struct name_data)); + data = g_new0(struct name_data, 1); - data->name = strdup(name); - if (!data->name) - goto failed; + data->name = g_strdup(name); name_listeners = g_slist_append(name_listeners, data); done: data->callbacks = g_slist_append(data->callbacks, cb); return first; - -failed: - if (data) - name_data_free(data); - - if (cb) - free(cb); - - return 0; } static void name_data_remove(const char *name, name_cb_t func, void *user_data) @@ -177,7 +157,7 @@ static void name_data_remove(const char *name, name_cb_t func, void *user_data) cb = name_callback_find(data->callbacks, func, user_data); if (cb) { data->callbacks = g_slist_remove(data->callbacks, cb); - free(cb); + g_free(cb); } if (!data->callbacks) { @@ -291,7 +271,7 @@ int name_listener_remove(DBusConnection *connection, const char *name, } data->callbacks = g_slist_remove(data->callbacks, cb); - free(cb); + g_free(cb); /* Don't remove the filter if other callbacks exist */ if (data->callbacks) @@ -434,9 +414,7 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data) if (!dbus_watch_get_enabled(watch)) return TRUE; - info = malloc(sizeof(struct watch_info)); - if (info == NULL) - return FALSE; + info = g_new(struct watch_info, 1); fd = dbus_watch_get_fd(watch); info->io = g_io_channel_unix_new(fd); @@ -464,7 +442,7 @@ static void remove_watch(DBusWatch *watch, void *data) g_source_remove(info->watch_id); g_io_channel_unref(info->io); dbus_connection_unref(info->conn); - free(info); + g_free(info); } } @@ -498,7 +476,7 @@ static void timeout_handler_free(void *data) return; g_source_remove(handler->id); - free(handler); + g_free(handler); } static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) @@ -508,8 +486,7 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) if (!dbus_timeout_get_enabled (timeout)) return TRUE; - handler = malloc(sizeof(timeout_handler_t)); - memset(handler, 0, sizeof(timeout_handler_t)); + handler = g_new0(timeout_handler_t, 1); handler->timeout = timeout; handler->id = g_timeout_add(dbus_timeout_get_interval(timeout), @@ -595,12 +572,7 @@ DBusConnection *init_dbus(const char *name, void (*disconnect_cb)(void *), void if (!disconnect_cb) return conn; - dc_data = malloc(sizeof(struct disconnect_data)); - if (!dc_data) { - error("Allocating disconnect data failed"); - dbus_connection_unref(conn); - return NULL; - } + dc_data = g_new(struct disconnect_data, 1); dc_data->disconnect_cb = disconnect_cb; dc_data->user_data = user_data; @@ -608,9 +580,9 @@ DBusConnection *init_dbus(const char *name, void (*disconnect_cb)(void *), void dbus_connection_set_exit_on_disconnect(conn, FALSE); if (!dbus_connection_add_filter(conn, disconnect_filter, - dc_data, free)) { + dc_data, g_free)) { error("Can't add D-Bus disconnect filter"); - free(dc_data); + g_free(dc_data); dbus_connection_unref(conn); return NULL; } diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 81f6bc35..d94c43b9 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -1716,7 +1716,7 @@ void dc_pending_timeout_cleanup(struct adapter *adapter) { dbus_connection_unref(adapter->pending_dc->conn); dbus_message_unref(adapter->pending_dc->msg); - free(adapter->pending_dc); + g_free(adapter->pending_dc); adapter->pending_dc = NULL; } diff --git a/hcid/dbus-database.c b/hcid/dbus-database.c index ab3a6938..86053915 100644 --- a/hcid/dbus-database.c +++ b/hcid/dbus-database.c @@ -84,7 +84,7 @@ static void exit_callback(const char *name, void *user_data) if (user_record->sender) g_free(user_record->sender); - free(user_record); + g_free(user_record); } static DBusHandlerResult add_service_record(DBusConnection *conn, @@ -111,20 +111,20 @@ static DBusHandlerResult add_service_record(DBusConnection *conn, sdp_record = sdp_extract_pdu(record, &scanned); if (!sdp_record) { error("Parsing of service record failed"); - free(user_record); + g_free(user_record); return error_failed(conn, msg, EIO); } if (scanned != len) { error("Size mismatch of service record"); - free(user_record); + g_free(user_record); sdp_record_free(sdp_record); return error_failed(conn, msg, EIO); } if (add_record_to_server(sdp_record) < 0) { error("Failed to register service record"); - free(user_record); + g_free(user_record); sdp_record_free(sdp_record); return error_failed(conn, msg, EIO); } @@ -136,7 +136,7 @@ static DBusHandlerResult add_service_record(DBusConnection *conn, if (register_sdp_binary((uint8_t *) record, size, &user_record->handle) < 0) { error("Failed to register service record"); - free(user_record); + g_free(user_record); return error_failed(conn, msg, errno); } } @@ -250,7 +250,7 @@ static DBusHandlerResult remove_service_record(DBusConnection *conn, if (user_record->sender) g_free(user_record->sender); - free(user_record); + g_free(user_record); reply = dbus_message_new_method_return(msg); if (!reply) diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 5db47f4f..3d53b901 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -71,7 +71,7 @@ void bonding_request_free(struct bonding_request_info *bonding) if (bonding->io) g_io_channel_unref(bonding->io); - free(bonding); + g_free(bonding); } int found_device_cmp(const struct remote_dev_info *d1, @@ -159,7 +159,7 @@ static int found_device_remove(GSList **list, bdaddr_t *bdaddr) dev = l->data; *list = g_slist_remove(*list, dev); - free(dev); + g_free(dev); return 0; } @@ -421,7 +421,7 @@ int unregister_adapter_path(const char *path) name_listener_remove(connection, adapter->discov_requestor, (name_cb_t) discover_devices_req_exit, adapter); - free(adapter->discov_requestor); + g_free(adapter->discov_requestor); adapter->discov_requestor = NULL; } @@ -430,7 +430,7 @@ int unregister_adapter_path(const char *path) adapter->pdiscov_requestor, (name_cb_t) periodic_discover_req_exit, adapter); - free(adapter->pdiscov_requestor); + g_free(adapter->pdiscov_requestor); adapter->pdiscov_requestor = NULL; } @@ -510,7 +510,7 @@ int hcid_dbus_register_device(uint16_t id) if (!dbus_connection_register_object_path(connection, path, &adapter_vtable, adapter)) { error("D-Bus failed to register %s object", path); - free(adapter); + g_free(adapter); return -1; } @@ -718,7 +718,7 @@ int hcid_dbus_stop_device(uint16_t id) name_listener_remove(connection, adapter->discov_requestor, (name_cb_t) discover_devices_req_exit, adapter); - free(adapter->discov_requestor); + g_free(adapter->discov_requestor); adapter->discov_requestor = NULL; } @@ -726,7 +726,7 @@ int hcid_dbus_stop_device(uint16_t id) name_listener_remove(connection, adapter->pdiscov_requestor, (name_cb_t) periodic_discover_req_exit, adapter); - free(adapter->pdiscov_requestor); + g_free(adapter->pdiscov_requestor); adapter->pdiscov_requestor = NULL; } @@ -1171,7 +1171,7 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local) if (adapter->discov_requestor) { name_listener_remove(connection, adapter->discov_requestor, (name_cb_t) discover_devices_req_exit, adapter); - free(adapter->discov_requestor); + g_free(adapter->discov_requestor); adapter->discov_requestor = NULL; /* If there is a pending reply for discovery cancel */ @@ -1281,7 +1281,7 @@ void hcid_dbus_periodic_inquiry_exit(bdaddr_t *local, uint8_t status) name_listener_remove(connection, adapter->pdiscov_requestor, (name_cb_t) periodic_discover_req_exit, adapter); - free(adapter->pdiscov_requestor); + g_free(adapter->pdiscov_requestor); adapter->pdiscov_requestor = NULL; } @@ -1376,7 +1376,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, char *dev = l->data; adapter->oor_devices = g_slist_remove(adapter->oor_devices, dev); - free(dev); + g_free(dev); } } @@ -1414,7 +1414,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, name_status = NAME_NOT_REQUIRED; if (name) - free(name); + g_free(name); name = tmp_name; } else { @@ -1432,7 +1432,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, DBUS_TYPE_INVALID); send_message_and_unref(connection, signal_name); - free(name); + g_free(name); if (name_type != 0x08) name_status = NAME_SENT; @@ -1538,7 +1538,7 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, uint8_t status, if (adapter->discov_requestor) { name_listener_remove(connection, adapter->discov_requestor, (name_cb_t) discover_devices_req_exit, adapter); - free(adapter->discov_requestor); + g_free(adapter->discov_requestor); adapter->discov_requestor = NULL; /* If there is a pending reply for discovery cancel */ diff --git a/hcid/dbus-manager.c b/hcid/dbus-manager.c index d061e85a..a24db32f 100644 --- a/hcid/dbus-manager.c +++ b/hcid/dbus-manager.c @@ -151,7 +151,7 @@ static DBusHandlerResult list_adapters(DBusConnection *conn, if (ioctl(sk, HCIGETDEVLIST, dl) < 0) { int err = errno; close(sk); - free(dl); + g_free(dl); return error_failed(conn, msg, err); } diff --git a/hcid/dbus-security.c b/hcid/dbus-security.c index 07a9490f..263517e1 100644 --- a/hcid/dbus-security.c +++ b/hcid/dbus-security.c @@ -119,18 +119,16 @@ static void passkey_agent_free(struct passkey_agent *agent) if (!agent->exited) release_agent(agent); - if (agent->name) - free(agent->name); - if (agent->path) - free(agent->path); - if (agent->addr) - free(agent->addr); + g_free(agent->name); + g_free(agent->path); + g_free(agent->addr); + if (agent->conn) dbus_connection_unref(agent->conn); g_slist_free(agent->pending_requests); - free(agent); + g_free(agent); } static void agent_exited(const char *name, struct adapter *adapter) diff --git a/hcid/dbus-test.c b/hcid/dbus-test.c index 31b1392e..3d064c7f 100644 --- a/hcid/dbus-test.c +++ b/hcid/dbus-test.c @@ -107,9 +107,9 @@ static struct audit *audit_new(DBusConnection *conn, DBusMessage *msg, static void audit_free(struct audit *audit) { - free(audit->requestor); + g_free(audit->requestor); dbus_connection_unref(audit->conn); - free(audit); + g_free(audit); } static void send_audit_status(struct audit *audit, const char *name) -- cgit