Branch: master

6e9f8cb7 2014-12-06 15:17:15 Timothy Pearson
Fix Kontact crash in Akregator part due to identical destructor signatures being generated for two unrelated classes
This relates to Bug 2235
Fix a slew of non-virtual destructor problems
M akregator/src/actionmanagerimpl.cpp
M akregator/src/article.cpp
M akregator/src/articlefilter.h
M akregator/src/articlelistview.cpp
M akregator/src/articleviewer.cpp
M akregator/src/feed.cpp
M akregator/src/feedlist.cpp
M akregator/src/feedlistview.cpp
M akregator/src/plugin.cpp
M akregator/src/plugin.h
M akregator/src/simplenodeselector.cpp
M akregator/src/storagefactory.h
M kontact/interfaces/plugin.h
M kontact/interfaces/uniqueapphandler.h
M kontact/plugins/akregator/akregator_plugin.cpp
M kontact/plugins/akregator/akregator_plugin.h
M kontact/plugins/kaddressbook/kaddressbook_plugin.h
M kontact/plugins/karm/karm_plugin.h
M kontact/plugins/kitchensync/kitchensync_plugin.h
M kontact/plugins/kmail/kmail_plugin.h
M kontact/plugins/knode/knode_plugin.h
M kontact/plugins/knotes/knotes_plugin.h
M kontact/plugins/korganizer/korganizerplugin.h
M kontact/plugins/kpilot/kpilot_plugin.cpp
M kontact/plugins/kpilot/kpilot_plugin.h
M kontact/plugins/newsticker/newsticker_plugin.cpp
M kontact/plugins/newsticker/newsticker_plugin.h
M kontact/plugins/specialdates/specialdates_plugin.h
M kontact/plugins/summary/summaryview_plugin.h
M kontact/plugins/test/test_plugin.h
M kontact/plugins/weather/weather_plugin.cpp
M kontact/plugins/weather/weather_plugin.h
M korganizer/printing/cellitem.h
M ktnef/gui/qwmf.cpp
M libkcal/calendarresources.h
M libtdepim/alarmclient.cpp
M libtdepim/alarmclient.h
M wizards/kmailchanges.h
diff --git a/akregator/src/actionmanagerimpl.cpp b/akregator/src/actionmanagerimpl.cpp
index c269500..7fa61cd 100644
--- a/akregator/src/actionmanagerimpl.cpp
+++ b/akregator/src/actionmanagerimpl.cpp
@@ -68,6 +68,7 @@
 {
     public:
     NodeSelectVisitor(ActionManagerImpl* manager) : m_manager(manager) {}
+    virtual ~NodeSelectVisitor() {}
 
     virtual bool visitFeed(Feed* node)
     {
diff --git a/akregator/src/article.cpp b/akregator/src/article.cpp
index 8b62509..0e01d3e 100644
--- a/akregator/src/article.cpp
+++ b/akregator/src/article.cpp
@@ -91,6 +91,7 @@
     d->guid = guid;
     d->archive = Backend::Storage::getInstance()->archiveFor(feed->xmlUrl());
     d->status = 0;
+    d->hash = 0;
 }
 
 void Article::initialize(RSS::Article article, Backend::FeedStorage* archive)
@@ -101,7 +102,7 @@
                               + article.commentsLink().url() );
 
     d->guid = article.guid();
-    
+
     if (!d->archive->contains(d->guid))
     {
         d->archive->addEntry(d->guid);
@@ -113,7 +114,7 @@
         }
         else
         { // article is not deleted, let's add it to the archive
-        
+
             d->archive->setHash(d->guid, hash() );
             TQString title = article.title().isEmpty() ? buildTitle(article.description()) :  article.title();
             d->archive->setTitle(d->guid, title);
@@ -358,7 +359,6 @@
 
 int Article::comments() const
 {
-    
     return d->archive->comments(d->guid);
 }
 
diff --git a/akregator/src/articlefilter.h b/akregator/src/articlefilter.h
index 5f1e7af..535a731 100644
--- a/akregator/src/articlefilter.h
+++ b/akregator/src/articlefilter.h
@@ -145,6 +145,10 @@
 class AbstractAction
 {
     public:
+        AbstractAction() {}
+        virtual ~AbstractAction() {}
+
+    public:
         virtual void exec(Article& article) = 0;
 
         virtual void writeConfig(TDEConfig* config) const = 0;
diff --git a/akregator/src/articlelistview.cpp b/akregator/src/articlelistview.cpp
index 2324096..a0e5c8b 100644
--- a/akregator/src/articlelistview.cpp
+++ b/akregator/src/articlelistview.cpp
@@ -89,6 +89,7 @@
 {
     public:
         ColumnLayoutVisitor(ArticleListView* view) : m_view(view) {}
+        virtual ~ColumnLayoutVisitor() {}
 
         virtual bool visitTagNode(TagNode* /*node*/)
         {
diff --git a/akregator/src/articleviewer.cpp b/akregator/src/articleviewer.cpp
index 96b269e..3b1cc6d 100644
--- a/akregator/src/articleviewer.cpp
+++ b/akregator/src/articleviewer.cpp
@@ -66,6 +66,7 @@
     public:
     
     ShowSummaryVisitor(ArticleViewer* view) : m_view(view) {}
+    virtual ~ShowSummaryVisitor() {}
     
     virtual bool visitFeed(Feed* node)
     {
diff --git a/akregator/src/feed.cpp b/akregator/src/feed.cpp
index 3b0d810..7e7f59e 100644
--- a/akregator/src/feed.cpp
+++ b/akregator/src/feed.cpp
@@ -445,7 +445,7 @@
     RSS::Article::List::ConstIterator en = d_articles.end();
 
     int nudge=0;
-    
+
     TQValueList<Article> deletedArticles = d->deletedArticles;
 
     for (it = d_articles.begin(); it != en; ++it)
@@ -460,21 +460,21 @@
             TQValueList<ArticleInterceptor*> interceptors = ArticleInterceptorManager::self()->interceptors();
             for (TQValueList<ArticleInterceptor*>::ConstIterator it = interceptors.begin(); it != interceptors.end(); ++it)
                 (*it)->processArticle(mya);
-            
+
             d->addedArticlesNotify.append(mya);
-            
+
             if (!mya.isDeleted() && !markImmediatelyAsRead())
                 mya.setStatus(Article::New);
             else
                 mya.setStatus(Article::Read);
-                
+
             changed = true;
         }
         else // article is in list
         {
             // if the article's guid is no hash but an ID, we have to check if the article was updated. That's done by comparing the hash values.
             Article old = d->articles[(*it).guid()];
-            Article mya(*it, this);          
+            Article mya(*it, this);
             if (!mya.guidIsHash() && mya.hash() != old.hash() && !old.isDeleted())
             {
                 mya.setKeep(old.keep());
@@ -491,7 +491,7 @@
             }
             else if (old.isDeleted())
                 deletedArticles.remove(mya);
-        }    
+        }
     }
     
     TQValueList<Article>::ConstIterator dit = deletedArticles.begin();
diff --git a/akregator/src/feedlist.cpp b/akregator/src/feedlist.cpp
index 708b4fb..0c34e39 100644
--- a/akregator/src/feedlist.cpp
+++ b/akregator/src/feedlist.cpp
@@ -52,6 +52,7 @@
 {
     public:
         AddNodeVisitor(FeedList* list) : m_list(list) {}
+        virtual ~AddNodeVisitor() {}
 
 
         virtual bool visitFeed(Feed* node)
@@ -69,6 +70,7 @@
 {
     public:
         RemoveNodeVisitor(FeedList* list) : m_list(list) {}
+        virtual ~RemoveNodeVisitor() {}
 
         virtual bool visitFeed(Feed* node)
         {
diff --git a/akregator/src/feedlistview.cpp b/akregator/src/feedlistview.cpp
index d6ea394..f0a3736 100644
--- a/akregator/src/feedlistview.cpp
+++ b/akregator/src/feedlistview.cpp
@@ -78,6 +78,7 @@
 {
     public:
         ConnectNodeVisitor(NodeListView* view) : m_view(view) {}
+        virtual ~ConnectNodeVisitor() {}
 
         virtual bool visitTreeNode(TreeNode* node)
         {
@@ -114,6 +115,7 @@
 {
     public:
         DisconnectNodeVisitor(NodeListView* view) : m_view(view) {}
+        virtual ~DisconnectNodeVisitor() {}
 
         virtual bool visitTagNode(TagNode* node)
         {
@@ -153,6 +155,7 @@
     public:
         
         DeleteItemVisitor(NodeListView* view) : m_view(view) {}
+        virtual ~DeleteItemVisitor() {}
         
         virtual bool visitTreeNode(TreeNode* node)
         {
@@ -204,6 +207,7 @@
 {
     public:
         CreateItemVisitor(NodeListView* view) : m_view(view) {}
+        virtual ~CreateItemVisitor() {}
 
         virtual bool visitTagNode(TagNode* node)
         {
diff --git a/akregator/src/plugin.cpp b/akregator/src/plugin.cpp
index 495dabc..a90136b 100644
--- a/akregator/src/plugin.cpp
+++ b/akregator/src/plugin.cpp
@@ -8,11 +8,13 @@
 
 
 Plugin::Plugin()
-{}
+{
+}
 
 
 Plugin::~Plugin()
-{}
+{
+}
 
 
 void
diff --git a/akregator/src/plugin.h b/akregator/src/plugin.h
index 650a4a9..f440842 100644
--- a/akregator/src/plugin.h
+++ b/akregator/src/plugin.h
@@ -14,7 +14,6 @@
 #include <tqmap.h>
 #include <tqstring.h>
 
-
 namespace Akregator
 {
 //    class PluginConfig;
diff --git a/akregator/src/simplenodeselector.cpp b/akregator/src/simplenodeselector.cpp
index 4291bb4..a4f1d4b 100644
--- a/akregator/src/simplenodeselector.cpp
+++ b/akregator/src/simplenodeselector.cpp
@@ -93,6 +93,7 @@
     public:
 
     NodeVisitor(SimpleNodeSelector* view) : TreeNodeVisitor(), m_view(view) {}
+    virtual ~NodeVisitor() {}
 
     void createItems(TreeNode* node)
     {
diff --git a/akregator/src/storagefactory.h b/akregator/src/storagefactory.h
index 93ab7f7..3505ef4 100644
--- a/akregator/src/storagefactory.h
+++ b/akregator/src/storagefactory.h
@@ -38,18 +38,21 @@
 class AKREGATOR_EXPORT StorageFactory
 {
     public:
-    
+
+    StorageFactory() {}
+    virtual ~StorageFactory() {}
+
 ** Diff limit reached (max: 250 lines) **