Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbhatman1441 <blackhat1441@protonmail.com>2023-06-28 18:54:03 +0300
committerbhatman1441 <blackhat1441@protonmail.com>2023-06-28 18:54:03 +0300
commit4df09aa1441e19c55123fdded54bde23f34b0dce (patch)
tree95687da222f820a636db5b5612ae23b391294e63 /src
parent424af3487efce050a0c65caa8a65794e3c9f7ec0 (diff)
parentea2fa164cf2de8f503be396bb3373b541ce77cde (diff)
Merge branch 'fix-memory-leaks' into 'master'
Fix memory leaks and change GTK critical errors to remmina warnings for null icon autostart file See merge request Remmina/Remmina!2509
Diffstat (limited to 'src')
-rw-r--r--src/remmina_icon.c45
-rw-r--r--src/remmina_pref.c23
2 files changed, 45 insertions, 23 deletions
diff --git a/src/remmina_icon.c b/src/remmina_icon.c
index f12afce3d..eb2b8d317 100644
--- a/src/remmina_icon.c
+++ b/src/remmina_icon.c
@@ -276,7 +276,12 @@ static void remmina_icon_save_autostart_file(GKeyFile *gkeyfile)
gsize length;
content = g_key_file_to_data(gkeyfile, &length, NULL);
- g_file_set_contents(remmina_icon.autostart_file, content, length, NULL);
+ if (remmina_icon.autostart_file != NULL) {
+ g_file_set_contents(remmina_icon.autostart_file, content, length, NULL);
+ }
+ else {
+ REMMINA_WARNING("Cannot save remmina icon autostart file. Uncheck Preferences -> Applet -> No Tray Icon to recreate it.");
+ }
g_free(content);
}
@@ -430,7 +435,14 @@ gboolean remmina_icon_is_autostart(void)
gboolean b;
gkeyfile = g_key_file_new();
- g_key_file_load_from_file(gkeyfile, remmina_icon.autostart_file, G_KEY_FILE_NONE, NULL);
+
+ if (remmina_icon.autostart_file != NULL) {
+ g_key_file_load_from_file(gkeyfile, remmina_icon.autostart_file, G_KEY_FILE_NONE, NULL);
+ }
+ else {
+ REMMINA_WARNING("Cannot load remmina icon autostart file. Uncheck Preferences -> Applet -> No Tray Icon to recreate it.");
+ }
+
b = !g_key_file_get_boolean(gkeyfile, "Desktop Entry", "Hidden", NULL);
g_key_file_free(gkeyfile);
return b;
@@ -442,19 +454,24 @@ void remmina_icon_set_autostart(gboolean autostart)
GKeyFile *gkeyfile;
gboolean b;
- gkeyfile = g_key_file_new();
- g_key_file_load_from_file(gkeyfile, remmina_icon.autostart_file, G_KEY_FILE_NONE, NULL);
- b = !g_key_file_get_boolean(gkeyfile, "Desktop Entry", "Hidden", NULL);
- if (b != autostart) {
- g_key_file_set_boolean(gkeyfile, "Desktop Entry", "Hidden", !autostart);
- /* Refresh it in case translation is updated */
- // TRANSLATORS: Applet Name as per the Freedesktop Desktop entry specification https://specifications.freedesktop.org/desktop-entry-spec/latest/
- g_key_file_set_string(gkeyfile, "Desktop Entry", "Name", _("Remmina Applet"));
- // TRANSLATORS: Applet comment/description as per the Freedesktop Desktop entry specification https://specifications.freedesktop.org/desktop-entry-spec/latest/
- g_key_file_set_string(gkeyfile, "Desktop Entry", "Comment", _("Connect to remote desktops through the applet menu"));
- remmina_icon_save_autostart_file(gkeyfile);
+ if (remmina_icon.autostart_file != NULL) {
+ gkeyfile = g_key_file_new();
+ g_key_file_load_from_file(gkeyfile, remmina_icon.autostart_file, G_KEY_FILE_NONE, NULL);
+ b = !g_key_file_get_boolean(gkeyfile, "Desktop Entry", "Hidden", NULL);
+ if (b != autostart) {
+ g_key_file_set_boolean(gkeyfile, "Desktop Entry", "Hidden", !autostart);
+ /* Refresh it in case translation is updated */
+ // TRANSLATORS: Applet Name as per the Freedesktop Desktop entry specification https://specifications.freedesktop.org/desktop-entry-spec/latest/
+ g_key_file_set_string(gkeyfile, "Desktop Entry", "Name", _("Remmina Applet"));
+ // TRANSLATORS: Applet comment/description as per the Freedesktop Desktop entry specification https://specifications.freedesktop.org/desktop-entry-spec/latest/
+ g_key_file_set_string(gkeyfile, "Desktop Entry", "Comment", _("Connect to remote desktops through the applet menu"));
+ remmina_icon_save_autostart_file(gkeyfile);
+ g_key_file_free(gkeyfile);
+ }
+ }
+ else {
+ REMMINA_WARNING("Cannot load remmina icon autostart file. Uncheck Preferences -> Applet -> No Tray Icon to recreate it.");
}
- g_key_file_free(gkeyfile);
}
#else
diff --git a/src/remmina_pref.c b/src/remmina_pref.c
index 23d1a1ad7..d31cb29aa 100644
--- a/src/remmina_pref.c
+++ b/src/remmina_pref.c
@@ -221,7 +221,7 @@ void remmina_pref_init(void)
{
TRACE_CALL(__func__);
GKeyFile *gkeyfile;
- gchar *remmina_dir;
+ gchar *remmina_dir, *remmina_pref_path, *user_config_path;
const gchar *filename = "remmina.pref";
const gchar *colors_filename = "remmina.colors";
g_autofree gchar *remmina_colors_file = NULL;
@@ -239,10 +239,10 @@ void remmina_pref_init(void)
remmina_dir = g_build_path("/", g_get_home_dir(), legacy, NULL);
if (g_file_test(remmina_dir, G_FILE_TEST_IS_DIR)) {
dir = g_dir_open(remmina_dir, 0, NULL);
- remmina_pref_file_do_copy(
- g_build_path("/", remmina_dir, filename, NULL),
- g_build_path("/", g_get_user_config_dir(),
- "remmina", filename, NULL));
+ remmina_pref_path = g_build_path("/", remmina_dir, filename, NULL);
+ user_config_path = g_build_path("/", g_get_user_config_dir(),
+ "remmina", filename, NULL);
+ remmina_pref_file_do_copy(remmina_pref_path, user_config_path);
g_dir_close(dir);
}
@@ -255,15 +255,18 @@ void remmina_pref_init(void)
if (g_file_test(remmina_dir, G_FILE_TEST_IS_DIR)) {
dir = g_dir_open(remmina_dir, 0, NULL);
while ((filename = g_dir_read_name(dir)) != NULL) {
- remmina_pref_file_do_copy(
- g_build_path("/", remmina_dir, filename, NULL),
- g_build_path("/", g_get_user_config_dir(),
- "remmina", filename, NULL));
+ remmina_pref_path = g_build_path("/", remmina_dir, filename, NULL);
+ user_config_path = g_build_path("/", g_get_user_config_dir(),
+ "remmina", filename, NULL);
+ remmina_pref_file_do_copy(remmina_pref_path, user_config_path);
}
g_free(remmina_dir), remmina_dir = NULL;
}
}
+ g_free(remmina_pref_path);
+ g_free(user_config_path);
+
/* The last case we use the home ~/.config/remmina */
if (remmina_dir != NULL)
g_free(remmina_dir), remmina_dir = NULL;
@@ -276,6 +279,8 @@ void remmina_pref_init(void)
remmina_keymap_file = g_strdup_printf("%s/remmina.keymap", remmina_dir);
+ g_free(remmina_dir);
+
gkeyfile = g_key_file_new();
g_key_file_load_from_file(gkeyfile, remmina_pref_file, G_KEY_FILE_NONE, NULL);