rpms/xfce4-power-manager/devel xfce4-power-manager-0.8.3.1-fix-segfault-in-xfpm_session_set_client_id.patch, NONE, 1.1 xfce4-power-manager.spec, 1.17, 1.18

Christoph Wickert cwickert at fedoraproject.org
Wed Sep 9 17:43:53 UTC 2009


Author: cwickert

Update of /cvs/pkgs/rpms/xfce4-power-manager/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31872/devel

Modified Files:
	xfce4-power-manager.spec 
Added Files:
	xfce4-power-manager-0.8.3.1-fix-segfault-in-xfpm_session_set_client_id.patch 
Log Message:
* Wed Sep 09 2009 Christoph Wickert <cwickert at fedoraproject.org> - 0.8.3.1-2
- Fix segfault in xfpm_session_set_client_id


xfce4-power-manager-0.8.3.1-fix-segfault-in-xfpm_session_set_client_id.patch:
 xfpm-main.c    |    2 ++
 xfpm-session.c |   15 ++++++++++++---
 xfpm-session.h |    3 +++
 3 files changed, 17 insertions(+), 3 deletions(-)

--- NEW FILE xfce4-power-manager-0.8.3.1-fix-segfault-in-xfpm_session_set_client_id.patch ---
diff --git a/src/xfpm-main.c b/src/xfpm-main.c
index 9a20d45..3004567 100644
--- a/src/xfpm-main.c
+++ b/src/xfpm-main.c
@@ -82,6 +82,8 @@ xfpm_start (DBusGConnection *bus)
     
     if ( client_id != NULL )
 	xfpm_session_set_client_id (session, client_id);
+	
+    xfpm_session_real_init (session);
     
     manager = xfpm_manager_new (bus);
     
diff --git a/src/xfpm-session.c b/src/xfpm-session.c
index 38ede11..1daed15 100644
--- a/src/xfpm-session.c
+++ b/src/xfpm-session.c
@@ -59,6 +59,7 @@ struct XfpmSessionPrivate
 {
     SessionClient *client;
     gboolean       managed;
+    gboolean	   initted;
 };
 
 enum
@@ -117,6 +118,7 @@ xfpm_session_init (XfpmSession *session)
     
     session->priv->client = NULL;
     session->priv->managed = FALSE;
+    session->priv->initted = FALSE;
     
     restart_command    = g_new (gchar *, 3);
     restart_command[0] = g_strdup ("xfce4-power-manager");
@@ -140,7 +142,6 @@ xfpm_session_init (XfpmSession *session)
 	return;
     }
     
-    session->priv->managed 	   = session_init (session->priv->client);
     session->priv->client->die     = xfpm_session_die;
 }
 
@@ -219,13 +220,21 @@ xfpm_session_new (void)
     return XFPM_SESSION (xfpm_session_object);
 }
 
+void xfpm_session_real_init (XfpmSession *session)
+{
+    session->priv->managed = session_init (session->priv->client);
+    session->priv->initted = TRUE;
+}
+
 void xfpm_session_set_client_id (XfpmSession *session, const gchar *client_id)
 {
     g_return_if_fail (XFPM_IS_SESSION (session));
+    g_return_if_fail (session->priv->initted == FALSE);
     
-    if ( G_UNLIKELY (session->priv->client == NULL) )
+    if ( G_UNLIKELY (session->priv->client == NULL || session->priv->managed == FALSE) )
 	return;
     
+    TRACE ("Setting client id : %s\n", client_id);
     client_session_set_client_id (session->priv->client, client_id);
 }
 
@@ -233,7 +242,7 @@ void xfpm_session_quit (XfpmSession *session)
 {
     g_return_if_fail (XFPM_IS_SESSION (session));
     
-    if ( !session->priv->managed)
+    if ( G_UNLIKELY (session->priv->client == NULL || session->priv->managed == FALSE) )
 	return;
     
     client_session_set_restart_style (session->priv->client, SESSION_RESTART_NEVER);
diff --git a/src/xfpm-session.h b/src/xfpm-session.h
index 133d705..e40b13a 100644
--- a/src/xfpm-session.h
+++ b/src/xfpm-session.h
@@ -47,8 +47,11 @@ typedef struct
 } XfpmSessionClass;
 
 GType  		      		 xfpm_session_get_type        (void) G_GNUC_CONST;
+
 XfpmSession       		*xfpm_session_new             (void);
 
+void				 xfpm_session_real_init	      (XfpmSession *session);
+
 void			         xfpm_session_set_client_id   (XfpmSession *session,
 							       const gchar *client_id);
 							    


Index: xfce4-power-manager.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xfce4-power-manager/devel/xfce4-power-manager.spec,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -p -r1.17 -r1.18
--- xfce4-power-manager.spec	9 Aug 2009 16:07:55 -0000	1.17
+++ xfce4-power-manager.spec	9 Sep 2009 17:43:53 -0000	1.18
@@ -1,6 +1,6 @@
 Name:           xfce4-power-manager
 Version:        0.8.3.1
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Power management for the Xfce desktop environment
 
 Group:          User Interface/Desktops
@@ -8,6 +8,8 @@ License:        GPLv2+
 URL:            http://goodies.xfce.org/projects/applications/%{name}
 Source0:        http://archive.xfce.org/src/apps/%{name}/0.8/%{name}-%{version}.tar.bz2
 Patch0:         %{name}-0.8.2-dpmsconst.patch
+# from upstream's git rev 3004567
+Patch1:         %{name}-0.8.3.1-fix-segfault-in-xfpm_session_set_client_id.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  xfconf-devel >= 4.6.0
@@ -30,6 +32,7 @@ preferences.
 
 %prep
 %setup -q
+%patch1 -p1 -b .segfault
 %if 0%{?fedora} >= 12
 %patch0 -b .dpmsstr
 %endif
@@ -84,6 +87,9 @@ gtk-update-icon-cache %{_datadir}/icons/
 
 
 %changelog
+* Wed Sep 09 2009 Christoph Wickert <cwickert at fedoraproject.org> - 0.8.3.1-2
+- Fix segfault in xfpm_session_set_client_id
+
 * Sun Aug 09 2009 Christoph Wickert <cwickert at fedoraproject.org> - 0.8.3.1-1
 - Update to 0.8.3.1
 




More information about the scm-commits mailing list