File fixed-reference-counting-of-GObjects.patch of Package polkit-qt-1

From: Martin Briza <mbriza@redhat.com>
Date: Fri, 22 Mar 2013 14:52:52 +0000
Subject: Fixed reference counting of GObjects
X-Git-Url: http://quickgit.kde.org/?p=polkit-qt-1.git&a=commitdiff&h=4ed9c3fa043b70ee50176c4baacc07d1c73f1fce
---
Fixed reference counting of GObjects

Gets us rid of some crashes and reduces memory leaking. There's a change it fixes crashes~

BUGS: 257802, 286935, 291977, 307323
---


--- a/agent/polkitqt1-agent-listener.cpp
+++ b/agent/polkitqt1-agent-listener.cpp
@@ -62,6 +62,10 @@
     g_type_init();
 
     d->listener = listener;
+    
+    if (d->listener != NULL) {
+        g_object_ref(d->listener);
+    }
 }
 
 Listener::~Listener()

--- a/agent/polkitqt1-agent-session.cpp
+++ b/agent/polkitqt1-agent-session.cpp
@@ -66,6 +66,9 @@
         , d(new Private)
 {
     d->polkitAgentSession = pkAgentSession;
+    if (d->polkitAgentSession) {
+        g_object_ref(d->polkitAgentSession);
+    }
     g_signal_connect(G_OBJECT(d->polkitAgentSession), "completed", G_CALLBACK(Private::completed), this);
     g_signal_connect(G_OBJECT(d->polkitAgentSession), "request", G_CALLBACK(Private::request), this);
     g_signal_connect(G_OBJECT(d->polkitAgentSession), "show-error", G_CALLBACK(Private::showError), this);

--- a/core/polkitqt1-details.cpp
+++ b/core/polkitqt1-details.cpp
@@ -35,11 +35,15 @@
         : QSharedData(other)
         , polkitDetails(other.polkitDetails)
     {
-        g_object_ref(polkitDetails);
+        if (polkitDetails != NULL) {
+            g_object_ref(polkitDetails);
+        }
     }
     ~Data()
     {
-        g_object_unref(polkitDetails);
+        if (polkitDetails != NULL) {
+            g_object_unref(polkitDetails);
+        }
     }
 
     PolkitDetails *polkitDetails;
@@ -57,6 +61,10 @@
 {
     g_type_init();
     d->polkitDetails = pkDetails;
+    
+    if (d->polkitDetails != NULL) {
+        g_object_ref(d->polkitDetails);
+    }
 }
 
 Details::~Details()

--- a/core/polkitqt1-subject.cpp
+++ b/core/polkitqt1-subject.cpp
@@ -58,6 +58,10 @@
 {
     g_type_init();
     d->subject = subject;
+    
+    if (d->subject != NULL) {
+        g_object_ref(d->subject);
+    }
 }
 
 Subject::Subject(const PolkitQt1::Subject& other)
@@ -88,6 +92,9 @@
 
 void Subject::setSubject(PolkitSubject *subject)
 {
+    if (d->subject != NULL) {
+        g_object_unref(d->subject);
+    }
     d->subject = subject;
 }
 

openSUSE Build Service is sponsored by