[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    [PATCH] Korganizer crash with multiple windows
From:       Waldo Bastian <bastian () kde ! org>
Date:       2002-03-12 6:02:16
[Download RAW message or body]

[Please cc me, I'm not subscribed to kde-pim]

KOrganizer tries to share the same part between multiple windows which leads 
to crashes: start korganizer, new window, close window, new window *boom*

I don't think a part is supposed to be shared so this patch makes sure every 
window gets its own parts.

Cheers,
Waldo
-- 
bastian@kde.org  |   SuSE Labs KDE Developer  |  bastian@suse.com

["korganizer.patch" (text/x-diff)]

Index: kocore.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/kocore.cpp,v
retrieving revision 1.8
diff -u -p -r1.8 kocore.cpp
--- kocore.cpp	2002/01/19 01:30:02	1.8
+++ kocore.cpp	2002/03/12 05:57:02
@@ -48,7 +48,7 @@ KOCore *KOCore::self()
 
 KOCore::KOCore() :
   mCalendarDecorationsLoaded(false),
-  mPartsLoaded(false), mHolidaysLoaded(false)
+  mHolidaysLoaded(false)
 {
 }
 
@@ -179,16 +179,13 @@ KOrg::CalendarDecoration::List KOCore::c
   return mCalendarDecorations;
 }
 
-KOrg::Part::List KOCore::parts(KOrg::MainWindow *parent)
+KOrg::Part::List KOCore::loadParts(KOrg::MainWindow *parent)
 {
-  if (!mPartsLoaded) {
-    mParts.clear();
-    KTrader::OfferList plugins = availablePlugins("KOrganizer/Part");
-    KTrader::OfferList::ConstIterator it;
-    for(it = plugins.begin(); it != plugins.end(); ++it) {
-      mParts.append(loadPart(*it,parent));
-    }
-    mPartsLoaded = true;
+  mParts.clear();
+  KTrader::OfferList plugins = availablePlugins("KOrganizer/Part");
+  KTrader::OfferList::ConstIterator it;
+  for(it = plugins.begin(); it != plugins.end(); ++it) {
+    mParts.append(loadPart(*it,parent));
   }
   
   return mParts;
Index: kocore.h
===================================================================
RCS file: /home/kde/kdepim/korganizer/kocore.h,v
retrieving revision 1.7
diff -u -p -r1.7 kocore.h
--- kocore.h	2002/01/19 01:30:02	1.7
+++ kocore.h	2002/03/12 05:57:02
@@ -45,7 +45,7 @@ class KOCore {
     KOrg::Part *loadPart(const QString &,KOrg::MainWindow *parent);
 
     KOrg::CalendarDecoration::List calendarDecorations();
-    KOrg::Part::List parts(KOrg::MainWindow *parent);
+    KOrg::Part::List loadParts(KOrg::MainWindow *parent);
 
     void reloadPlugins();
 
@@ -61,7 +61,6 @@ class KOCore {
     bool mCalendarDecorationsLoaded;
     
     KOrg::Part::List mParts;
-    bool mPartsLoaded;
 
     KOrg::CalendarDecoration *mHolidays;
     bool mHolidaysLoaded;    
Index: korganizer.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/korganizer.cpp,v
retrieving revision 1.100
diff -u -p -r1.100 korganizer.cpp
--- korganizer.cpp	2002/03/02 11:59:47	1.100
+++ korganizer.cpp	2002/03/12 05:57:03
@@ -507,7 +507,7 @@ void KOrganizer::initParts()
 {
   kdDebug() << "KOrganizer::initParts()" << endl;
 
-  KOrg::Part::List parts = KOCore::self()->parts(this);
+  KOrg::Part::List parts = KOCore::self()->loadParts(this);
   KOrg::Part *it;
   for( it=parts.first(); it; it=parts.next() ) {    
     guiFactory()->addClient(it);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic