From 2c38df5f30594648e08b57d0819d81f1f4ee74f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=80=D0=B8=D0=BB=D0=BB=20=D0=97=D0=B8=D0=BC?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2?= Date: Tue, 27 Jul 2021 12:08:15 +0700 Subject: [PATCH] Fix memory problems --- dbus/gattlib.c | 4 +++- dbus/gattlib_adapter.c | 4 +++- dbus/gattlib_notification.c | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dbus/gattlib.c b/dbus/gattlib.c index 3257d30..3f77a1d 100644 --- a/dbus/gattlib.c +++ b/dbus/gattlib.c @@ -268,8 +268,8 @@ int gattlib_disconnect(gatt_connection_t* connection) { g_main_loop_unref(conn_context->connection_loop); disconnect_all_notifications(conn_context); - free(conn_context->adapter); free(conn_context->adapter->adapter_name); + free(conn_context->adapter); free(connection->context); free(connection); @@ -598,6 +598,7 @@ int gattlib_discover_char_range(gatt_connection_t* connection, int start, int en } else { characteristic_list[count].handle = 0; characteristic_list[count].value_handle = 0; + characteristic_list[count].properties = 0; const gchar *const * flags = org_bluez_gatt_characteristic1_get_flags(characteristic_proxy); for (; *flags != NULL; flags++) { @@ -683,6 +684,7 @@ static void add_characteristics_from_service(gattlib_context_t* conn_context, GD characteristic_list[*count].handle = handle; characteristic_list[*count].value_handle = handle; + characteristic_list[*count].properties = 0; const gchar *const * flags = org_bluez_gatt_characteristic1_get_flags(characteristic); for (; *flags != NULL; flags++) { diff --git a/dbus/gattlib_adapter.c b/dbus/gattlib_adapter.c index 23ba02e..57cdd03 100644 --- a/dbus/gattlib_adapter.c +++ b/dbus/gattlib_adapter.c @@ -351,8 +351,10 @@ int gattlib_adapter_close(void* adapter) { struct gattlib_adapter *gattlib_adapter = adapter; - g_object_unref(gattlib_adapter->device_manager); + if (gattlib_adapter->device_manager) + g_object_unref(gattlib_adapter->device_manager); g_object_unref(gattlib_adapter->adapter_proxy); + free(gattlib_adapter->adapter_name); free(gattlib_adapter); return GATTLIB_SUCCESS; diff --git a/dbus/gattlib_notification.c b/dbus/gattlib_notification.c index 11f40ee..57b8fba 100644 --- a/dbus/gattlib_notification.c +++ b/dbus/gattlib_notification.c @@ -102,7 +102,6 @@ static gboolean on_handle_characteristic_property_change( &uuid, data, data_length); // As per https://developer.gnome.org/glib/stable/glib-GVariant.html#g-variant-iter-loop, clean up `key` and `value`. - g_free(key); g_variant_unref(value); break; }