Plug some memory leaks

This commit is contained in:
Matthias Clasen 2008-09-15 00:25:41 +00:00
parent 54e788ac36
commit a4a076c5df
4 changed files with 66 additions and 1 deletions

13
ListenObjs-leak.patch Normal file
View File

@ -0,0 +1,13 @@
diff -up gnome-session-2.23.92/gnome-session/gsm-xsmp-server.c.ListenObj-leak gnome-session-2.23.92/gnome-session/gsm-xsmp-server.c
--- gnome-session-2.23.92/gnome-session/gsm-xsmp-server.c.ListenObj-leak 2008-09-14 13:36:09.000000000 -0400
+++ gnome-session-2.23.92/gnome-session/gsm-xsmp-server.c 2008-09-14 13:38:00.000000000 -0400
@@ -606,6 +606,9 @@ gsm_xsmp_server_finalize (GObject *objec
g_return_if_fail (xsmp_server->priv != NULL);
+ IceFreeListenObjs (xsmp_server->priv->num_xsmp_sockets,
+ xsmp_server->priv->xsmp_sockets);
+
if (xsmp_server->priv->client_store != NULL) {
g_object_unref (xsmp_server->priv->client_store);
}

View File

@ -12,7 +12,7 @@
Summary: GNOME session manager Summary: GNOME session manager
Name: gnome-session Name: gnome-session
Version: 2.23.92 Version: 2.23.92
Release: 1%{?dist} Release: 2%{?dist}
URL: http://www.gnome.org URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/gnome-session/2.23/%{name}-%{version}.tar.bz2 Source0: http://download.gnome.org/sources/gnome-session/2.23/%{name}-%{version}.tar.bz2
Source1: redhat-default-session Source1: redhat-default-session
@ -63,6 +63,13 @@ Requires(pre): GConf2 >= %{gconf2_version}
Requires(post): GConf2 >= %{gconf2_version} Requires(post): GConf2 >= %{gconf2_version}
Requires(preun): GConf2 >= %{gconf2_version} Requires(preun): GConf2 >= %{gconf2_version}
# http://bugzilla.gnome.org/show_bug.cgi?id=552292
Patch0: ListenObjs-leak.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=552293
Patch1: previous_id-leak.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=552294
Patch2: inhibitor-leak.patch
%description %description
gnome-session manages a GNOME desktop session. It starts up the other core gnome-session manages a GNOME desktop session. It starts up the other core
@ -70,6 +77,9 @@ GNOME components and handles logout and saving the session.
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .ListenObjs-leak
%patch1 -p1 -b .previous_id-leak
%patch2 -p1 -b .inhibitor-leak
%build %build
@ -168,6 +178,9 @@ fi
%changelog %changelog
* Sun Sep 14 2008 Matthias Clasen <mclasen@redhat.com> - 2.23.92-2
- Plug memory leaks
* Mon Sep 8 2008 Jon McCann <jmccann@redhat.com> - 2.23.92-1 * Mon Sep 8 2008 Jon McCann <jmccann@redhat.com> - 2.23.92-1
- Update to 2.23.92 - Update to 2.23.92

21
inhibitor-leak.patch Normal file
View File

@ -0,0 +1,21 @@
diff -up gnome-session-2.23.92/gnome-session/gsm-inhibit-dialog.c.inhibitor-leak gnome-session-2.23.92/gnome-session/gsm-inhibit-dialog.c
--- gnome-session-2.23.92/gnome-session/gsm-inhibit-dialog.c.inhibitor-leak 2008-09-14 19:48:46.000000000 -0400
+++ gnome-session-2.23.92/gnome-session/gsm-inhibit-dialog.c 2008-09-14 19:47:48.000000000 -0400
@@ -496,6 +496,7 @@ add_inhibitor (GsmInhibitDialog *dialog,
/* FIXME: get info from xid */
+ desktop_file = NULL;
name = NULL;
pixbuf = NULL;
freeme = NULL;
@@ -602,6 +603,9 @@ add_inhibitor (GsmInhibitDialog *dialog,
if (pixbuf != NULL) {
g_object_unref (pixbuf);
}
+ if (desktop_file != NULL) {
+ egg_desktop_file_free (desktop_file);
+ }
}
static gboolean

18
previous_id-leak.patch Normal file
View File

@ -0,0 +1,18 @@
diff -up gnome-session-2.23.92/gnome-session/gsm-xsmp-client.c.previous_id-leak.patch gnome-session-2.23.92/gnome-session/gsm-xsmp-client.c
--- gnome-session-2.23.92/gnome-session/gsm-xsmp-client.c.previous_id-leak.patch 2008-09-14 18:57:14.000000000 -0400
+++ gnome-session-2.23.92/gnome-session/gsm-xsmp-client.c 2008-09-14 18:57:30.000000000 -0400
@@ -857,13 +857,12 @@ register_client_callback (SmsConn con
g_debug ("GsmXSMPClient: Sending initial SaveYourself");
SmsSaveYourself (conn, SmSaveLocal, False, SmInteractStyleNone, False);
client->priv->current_save_yourself = SmSaveLocal;
-
- free (previous_id);
}
gsm_client_set_status (GSM_CLIENT (client), GSM_CLIENT_REGISTERED);
g_free (id);
+ free (previous_id);
return TRUE;
}