From b3eea1312575d4ab4a52f6860940164f7cb1dceb Mon Sep 17 00:00:00 2001 From: Dmitry Podgorny Date: Tue, 14 Apr 2020 03:24:02 +0300 Subject: [PATCH] Free GError objects glib functions can allocate a GError object that must be freed with g_error_free(). Otherwise a memory leak happens. There are similar unfixed places in omemo, check: grep "&error" src/omemo/omemo.c Fixes #1304. --- src/common.c | 2 ++ src/ui/notifier.c | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/common.c b/src/common.c index c056d167..31194352 100644 --- a/src/common.c +++ b/src/common.c @@ -114,6 +114,8 @@ copy_file(const char *const sourcepath, const char *const targetpath, const gboo GError *error = NULL; GFileCopyFlags flags = overwrite_existing ? G_FILE_COPY_OVERWRITE : G_FILE_COPY_NONE; gboolean success = g_file_copy (source, dest, flags, NULL, NULL, NULL, &error); + if (error != NULL) + g_error_free(error); g_object_unref(source); g_object_unref(dest); return success; diff --git a/src/ui/notifier.c b/src/ui/notifier.c index 9b2714a1..550416b9 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -224,9 +224,10 @@ notify(const char *const message, int timeout, const char *const category) log_error("Error sending desktop notification:"); log_error(" -> Message : %s", message); log_error(" -> Error : %s", error->message); + g_error_free(error); } else { - log_debug("Notification sent."); - } + log_debug("Notification sent."); + } } else { log_error("Libnotify not initialised."); }