From: arron <[email protected]>
Path value will be freed after the function call, this may lead to
can't connect/reconnect to a 3G service
---
plugins/ofono.c | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/plugins/ofono.c b/plugins/ofono.c
index 8650bfc..2bf777d 100644
--- a/plugins/ofono.c
+++ b/plugins/ofono.c
@@ -882,7 +882,7 @@ static int add_network(struct connman_device *device,
create_service(network);
- g_hash_table_insert(network_hash, (char *) path, info);
+ g_hash_table_insert(network_hash, g_strdup(path), info);
connman_network_set_available(network, TRUE);
connman_network_set_index(network, -1);
@@ -1585,7 +1585,7 @@ static void ofono_connect(DBusConnection *connection,
void *user_data)
g_free, remove_modem);
network_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
- NULL, remove_network);
+ g_free, remove_network);
call_ofono("/", OFONO_MANAGER_INTERFACE, GET_MODEMS,
manager_modems_reply, NULL, NULL,
@@ -1596,12 +1596,15 @@ static void ofono_disconnect(DBusConnection
*connection, void *user_data)
{
DBG("connection %p", connection);
- if (modem_hash == NULL)
- return;
-
- g_hash_table_destroy(modem_hash);
+ if (modem_hash != NULL) {
+ g_hash_table_destroy(modem_hash);
+ modem_hash = NULL;
+ }
- modem_hash = NULL;
+ if (network_hash != NULL) {
+ g_hash_table_destroy(network_hash);
+ network_hash = NULL;
+ }
}
static gboolean modem_changed(DBusConnection *connection, DBusMessage *message,
--
1.7.2.2
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman