Diff between 77527f92529fdeb43af91a96d10d95199c53a077 and 5783e002459bfb51488c6180c2e88b77c2ca2cbd

Changed Files

File Additions Deletions Status
src/adapter.c +11 -3 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index a920b21..d597025 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3457,6 +3457,13 @@ static uint8_t get_le_addr_type(GKeyFile *keyfile)
 	return addr_type;
 }
 
+static void probe_devices(void *user_data)
+{
+	struct btd_device *device = user_data;
+
+	device_probe_profiles(device, btd_device_get_uuids(device));
+}
+
 static void load_devices(struct btd_adapter *adapter)
 {
 	char dirname[PATH_MAX];
@@ -3465,6 +3472,7 @@ static void load_devices(struct btd_adapter *adapter)
 	GSList *ltks = NULL;
 	GSList *irks = NULL;
 	GSList *params = NULL;
+	GSList *added_devices = NULL;
 	DIR *dir;
 	struct dirent *entry;
 
@@ -3534,9 +3542,7 @@ static void load_devices(struct btd_adapter *adapter)
 
 		/* TODO: register services from pre-loaded list of primaries */
 
-		list = btd_device_get_uuids(device);
-		if (list)
-			device_probe_profiles(device, list);
+		added_devices = g_slist_append(added_devices, device);
 
 device_exist:
 		if (key_info) {
@@ -3564,6 +3570,8 @@ free:
 	g_slist_free_full(irks, g_free);
 	load_conn_params(adapter, params);
 	g_slist_free_full(params, g_free);
+
+	g_slist_free_full(added_devices, probe_devices);
 }
 
 int btd_adapter_block_address(struct btd_adapter *adapter,