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
pull/21/head r14.0.0
Timothy Pearson 10 years ago
parent 96cf12b16a
commit 6e9f8cb704

@ -68,6 +68,7 @@ class ActionManagerImpl::NodeSelectVisitor : public TreeNodeVisitor
{
public:
NodeSelectVisitor(ActionManagerImpl* manager) : m_manager(manager) {}
virtual ~NodeSelectVisitor() {}
virtual bool visitFeed(Feed* node)
{

@ -91,6 +91,7 @@ Article::Article(const TQString& guid, Feed* feed) : d(new Private)
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 @@ void Article::initialize(RSS::Article article, Backend::FeedStorage* archive)
+ article.commentsLink().url() );
d->guid = article.guid();
if (!d->archive->contains(d->guid))
{
d->archive->addEntry(d->guid);
@ -113,7 +114,7 @@ void Article::initialize(RSS::Article article, Backend::FeedStorage* archive)
}
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 @@ KURL Article::commentsLink() const
int Article::comments() const
{
return d->archive->comments(d->guid);
}

@ -144,6 +144,10 @@ class TagMatcher : public AbstractMatcher
class AbstractAction
{
public:
AbstractAction() {}
virtual ~AbstractAction() {}
public:
virtual void exec(Article& article) = 0;

@ -89,6 +89,7 @@ class ArticleListView::ColumnLayoutVisitor : public TreeNodeVisitor
{
public:
ColumnLayoutVisitor(ArticleListView* view) : m_view(view) {}
virtual ~ColumnLayoutVisitor() {}
virtual bool visitTagNode(TagNode* /*node*/)
{

@ -66,6 +66,7 @@ class ArticleViewer::ShowSummaryVisitor : public TreeNodeVisitor
public:
ShowSummaryVisitor(ArticleViewer* view) : m_view(view) {}
virtual ~ShowSummaryVisitor() {}
virtual bool visitFeed(Feed* node)
{

@ -445,7 +445,7 @@ void Feed::appendArticles(const RSS::Document &doc)
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 @@ void Feed::appendArticles(const RSS::Document &doc)
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 @@ void Feed::appendArticles(const RSS::Document &doc)
}
else if (old.isDeleted())
deletedArticles.remove(mya);
}
}
}
TQValueList<Article>::ConstIterator dit = deletedArticles.begin();

@ -52,6 +52,7 @@ class FeedList::AddNodeVisitor : public TreeNodeVisitor
{
public:
AddNodeVisitor(FeedList* list) : m_list(list) {}
virtual ~AddNodeVisitor() {}
virtual bool visitFeed(Feed* node)
@ -69,6 +70,7 @@ class FeedList::RemoveNodeVisitor : public TreeNodeVisitor
{
public:
RemoveNodeVisitor(FeedList* list) : m_list(list) {}
virtual ~RemoveNodeVisitor() {}
virtual bool visitFeed(Feed* node)
{

@ -78,6 +78,7 @@ class NodeListView::ConnectNodeVisitor : public TreeNodeVisitor
{
public:
ConnectNodeVisitor(NodeListView* view) : m_view(view) {}
virtual ~ConnectNodeVisitor() {}
virtual bool visitTreeNode(TreeNode* node)
{
@ -114,6 +115,7 @@ class NodeListView::DisconnectNodeVisitor : public TreeNodeVisitor
{
public:
DisconnectNodeVisitor(NodeListView* view) : m_view(view) {}
virtual ~DisconnectNodeVisitor() {}
virtual bool visitTagNode(TagNode* node)
{
@ -153,6 +155,7 @@ class NodeListView::DeleteItemVisitor : public TreeNodeVisitor
public:
DeleteItemVisitor(NodeListView* view) : m_view(view) {}
virtual ~DeleteItemVisitor() {}
virtual bool visitTreeNode(TreeNode* node)
{
@ -204,6 +207,7 @@ class NodeListView::CreateItemVisitor : public TreeNodeVisitor
{
public:
CreateItemVisitor(NodeListView* view) : m_view(view) {}
virtual ~CreateItemVisitor() {}
virtual bool visitTagNode(TagNode* node)
{

@ -8,11 +8,13 @@ namespace Akregator {
Plugin::Plugin()
{}
{
}
Plugin::~Plugin()
{}
{
}
void

@ -14,7 +14,6 @@
#include <tqmap.h>
#include <tqstring.h>
namespace Akregator
{
// class PluginConfig;

@ -93,6 +93,7 @@ class SimpleNodeSelector::NodeVisitor : public TreeNodeVisitor
public:
NodeVisitor(SimpleNodeSelector* view) : TreeNodeVisitor(), m_view(view) {}
virtual ~NodeVisitor() {}
void createItems(TreeNode* node)
{

@ -38,18 +38,21 @@ class Storage;
class AKREGATOR_EXPORT StorageFactory
{
public:
StorageFactory() {}
virtual ~StorageFactory() {}
/** identifier of the storage type, like "metakit", "postgres" etc. For use in
configuration files. Must not contain spaces or special characters.
*/
virtual TQString key() const = 0;
/** returns the (i18n'd) name of the storage type. */
virtual TQString name() const = 0;
/** true if the plugin is configurable via a config dialog */
virtual bool isConfigurable() const = 0;
/** shows the plugin's configuration dialog */
virtual void configure() = 0;
@ -59,11 +62,11 @@ class AKREGATOR_EXPORT StorageFactory
* write access.
*/
virtual bool allowsMultipleWriteAccess() const = 0;
/** creates a storage object with given parameters
@param params list of implementation-specific parameters
*/
virtual Storage* createStorage(const TQStringList& params) const = 0;
virtual Storage* createStorage(const TQStringList& params) const = 0;
};
}

@ -58,7 +58,6 @@ class Summary;
class KDE_EXPORT Plugin : public TQObject, virtual public KXMLGUIClient
{
Q_OBJECT
public:
/**
@ -71,7 +70,7 @@ class KDE_EXPORT Plugin : public TQObject, virtual public KXMLGUIClient
*/
Plugin( Core *core, TQObject *parent, const char *name );
~Plugin();
virtual ~Plugin();
/**
Sets the identifier.

@ -63,6 +63,8 @@ class KDE_EXPORT UniqueAppHandler : public DCOPObject
class UniqueAppHandlerFactoryBase
{
public:
UniqueAppHandlerFactoryBase() {}
virtual ~UniqueAppHandlerFactoryBase() {}
virtual UniqueAppHandler* createHandler( Plugin* ) = 0;
};

@ -44,14 +44,13 @@
#include "akregator_plugin.h"
namespace Akregator {
typedef KGenericFactory<Akregator::Plugin, Kontact::Core > PluginFactory;
typedef KGenericFactory<Akregator::AkregatorPlugin, Kontact::Core > PluginFactory;
K_EXPORT_COMPONENT_FACTORY( libkontact_akregator,
PluginFactory( "kontact_akregator" ) )
Plugin::Plugin( Kontact::Core *core, const char *, const TQStringList& )
AkregatorPlugin::AkregatorPlugin( Kontact::Core *core, const char *, const TQStringList& )
: Kontact::Plugin( core, TQT_TQOBJECT(core), "akregator" ), m_stub(0)
{
setInstance( PluginFactory::instance() );
insertNewAction( new TDEAction( i18n( "New Feed..." ), "bookmark_add", CTRL+SHIFT+Key_F, this, TQT_SLOT( addFeed() ), actionCollection(), "feed_new" ) );
@ -60,22 +59,22 @@ Plugin::Plugin( Kontact::Core *core, const char *, const TQStringList& )
new Kontact::UniqueAppHandlerFactory<Akregator::UniqueAppHandler>(), this );
}
Plugin::~Plugin()
AkregatorPlugin::~AkregatorPlugin()
{
}
bool Plugin::isRunningStandalone()
bool AkregatorPlugin::isRunningStandalone()
{
return m_uniqueAppWatcher->isRunningStandalone();
}
TQStringList Plugin::invisibleToolbarActions() const
TQStringList AkregatorPlugin::invisibleToolbarActions() const
{
return TQStringList( "file_new_contact" );
}
Akregator::AkregatorPartIface_stub *Plugin::interface()
Akregator::AkregatorPartIface_stub *AkregatorPlugin::interface()
{
if ( !m_stub ) {
part();
@ -86,7 +85,7 @@ Akregator::AkregatorPartIface_stub *Plugin::interface()
}
MyBasePart* Plugin::createPart()
MyBasePart* AkregatorPlugin::createPart()
{
MyBasePart* p = loadPart();
@ -98,24 +97,24 @@ MyBasePart* Plugin::createPart()
}
void Plugin::showPart()
void AkregatorPlugin::showPart()
{
core()->selectPlugin(this);
}
void Plugin::addFeed()
void AkregatorPlugin::addFeed()
{
interface()->addFeed();
}
TQStringList Plugin::configModules() const
TQStringList AkregatorPlugin::configModules() const
{
TQStringList modules;
modules << "PIM/akregator.desktop";
return modules;
}
void Plugin::readProperties( TDEConfig *config )
void AkregatorPlugin::readProperties( TDEConfig *config )
{
if ( part() ) {
Akregator::Part *myPart = static_cast<Akregator::Part*>( part() );
@ -123,7 +122,7 @@ void Plugin::readProperties( TDEConfig *config )
}
}
void Plugin::saveProperties( TDEConfig *config )
void AkregatorPlugin::saveProperties( TDEConfig *config )
{
if ( part() ) {
Akregator::Part *myPart = static_cast<Akregator::Part*>( part() );

@ -48,15 +48,14 @@ class UniqueAppHandler : public Kontact::UniqueAppHandler
};
class Plugin : public Kontact::Plugin
class AkregatorPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
Plugin( Kontact::Core *core, const char *name,
AkregatorPlugin( Kontact::Core *core, const char *name,
const TQStringList & );
~Plugin();
virtual ~AkregatorPlugin();
int weight() const { return 475; }

@ -45,11 +45,10 @@ public:
class KAddressbookPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KAddressbookPlugin( Kontact::Core *core, const char *name, const TQStringList& );
~KAddressbookPlugin();
virtual ~KAddressbookPlugin();
virtual bool createDCOPInterface( const TQString &serviceType );
virtual bool isRunningStandalone();

@ -37,12 +37,11 @@ class TDEAboutData;
class KarmPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KarmPlugin( Kontact::Core *core, const char *name,
const TQStringList & );
~KarmPlugin();
virtual ~KarmPlugin();
int weight() const { return 700; }

@ -35,12 +35,11 @@ class TDEAboutData;
class KitchenSyncPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KitchenSyncPlugin( Kontact::Core *core, const char *name,
const TQStringList & );
~KitchenSyncPlugin();
virtual ~KitchenSyncPlugin();
int weight() const { return 800; }

@ -46,11 +46,10 @@ public:
class KMailPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KMailPlugin( Kontact::Core *core, const char *name, const TQStringList& );
~KMailPlugin();
virtual ~KMailPlugin();
virtual bool isRunningStandalone();
virtual bool createDCOPInterface( const TQString& serviceType );

@ -43,11 +43,10 @@ public:
class KNodePlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KNodePlugin( Kontact::Core *core, const char *name, const TQStringList& );
~KNodePlugin();
virtual ~KNodePlugin();
virtual bool createDCOPInterface( const TQString& serviceType );
virtual bool isRunningStandalone();

@ -32,11 +32,10 @@ class SummaryWidget;
class KNotesPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KNotesPlugin( Kontact::Core *core, const char *name, const TQStringList& );
~KNotesPlugin();
virtual ~KNotesPlugin();
virtual Kontact::Summary *createSummaryWidget( TQWidget *parentWidget );

@ -36,11 +36,10 @@
class KOrganizerPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KOrganizerPlugin( Kontact::Core *core, const char *name, const TQStringList& );
~KOrganizerPlugin();
virtual ~KOrganizerPlugin();
virtual bool createDCOPInterface( const TQString& serviceType );
virtual bool isRunningStandalone();

@ -43,6 +43,10 @@ KPilotPlugin::KPilotPlugin( Kontact::Core *core, const char *name, const TQStrin
}
KPilotPlugin::~KPilotPlugin()
{
}
Kontact::Summary *KPilotPlugin::createSummaryWidget( TQWidget *parentWidget )
{
return new SummaryWidget( parentWidget );

@ -32,6 +32,7 @@ class KPilotPlugin : public Kontact::Plugin
public:
KPilotPlugin( Kontact::Core *core, const char *name, const TQStringList& );
KPilotPlugin();
virtual ~KPilotPlugin();
virtual Kontact::Summary *createSummaryWidget( TQWidget *parentWidget );

@ -37,6 +37,10 @@ NewsTickerPlugin::NewsTickerPlugin( Kontact::Core *core, const char *name, const
setInstance( NewsTickerPluginFactory::instance() );
}
NewsTickerPlugin::~NewsTickerPlugin()
{
}
Kontact::Summary *NewsTickerPlugin::createSummaryWidget( TQWidget* parentWidget )
{
return new SummaryWidget( parentWidget );

@ -30,6 +30,7 @@ class NewsTickerPlugin : public Kontact::Plugin
public:
NewsTickerPlugin( Kontact::Core *core, const char *name, const TQStringList& );
NewsTickerPlugin();
virtual ~NewsTickerPlugin();
virtual Kontact::Summary *createSummaryWidget( TQWidget* parentWidget );

@ -33,7 +33,7 @@ class SpecialdatesPlugin : public Kontact::Plugin
{
public:
SpecialdatesPlugin( Kontact::Core *core, const char *name, const TQStringList& );
~SpecialdatesPlugin();
virtual ~SpecialdatesPlugin();
int weight() const { return 310; }

@ -1,7 +1,7 @@
/*
This file is part of KDE Kontact.
Copyright (C) 2003 Sven Lüppken <sven@kde.org>
Copyright (C) 2003 Sven L<EFBFBD>ppken <sven@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@ -39,7 +39,7 @@ class SummaryView : public Kontact::Plugin
public:
SummaryView( Kontact::Core *core, const char *name, const TQStringList& );
~SummaryView();
virtual ~SummaryView();
int weight() const { return 100; }

@ -39,7 +39,7 @@ class TestPlugin : public Kontact::Plugin
public:
TestPlugin(Kontact::Core *core, const char *name, const TQStringList &);
~TestPlugin();
virtual ~TestPlugin();
protected:
KParts::Part* createPart();

@ -37,6 +37,10 @@ WeatherPlugin::WeatherPlugin( Kontact::Core *core, const char *name, const TQStr
setInstance( WeatherPluginFactory::instance() );
}
WeatherPlugin::~WeatherPlugin()
{
}
Kontact::Summary *WeatherPlugin::createSummaryWidget( TQWidget *parentWidget )
{
return new SummaryWidget( parentWidget );

@ -30,6 +30,7 @@ class WeatherPlugin : public Kontact::Plugin
public:
WeatherPlugin( Kontact::Core *core, const char *name, const TQStringList& );
WeatherPlugin();
virtual ~WeatherPlugin();
virtual Kontact::Summary *createSummaryWidget( TQWidget *parentWidget );

@ -38,13 +38,14 @@ class KDE_EXPORT CellItem
: mSubCells( 0 ), mSubCell( -1 )
{
}
virtual ~CellItem() {}
void setSubCells( int v ) { mSubCells = v; }
int subCells() const { return mSubCells; }
void setSubCell( int v ) { mSubCell = v; }
int subCell() const { return mSubCell; }
virtual bool overlaps( CellItem *other ) const = 0;
virtual TQString label() const;

@ -50,6 +50,8 @@ public:
class WinObjHandle
{
public:
WinObjHandle() {}
virtual ~WinObjHandle() {}
virtual void apply( TQPainter& p ) = 0;
};

@ -77,6 +77,7 @@ class LIBKCAL_EXPORT CalendarResources :
DestinationPolicy( CalendarResourceManager *manager,
TQWidget *parent = 0 ) :
mManager( manager ), mParent( parent ) {}
virtual ~DestinationPolicy() {}
virtual ResourceCalendar *destination( Incidence *incidence ) = 0;
virtual TQWidget *parent() { return mParent; }
@ -100,6 +101,7 @@ class LIBKCAL_EXPORT CalendarResources :
StandardDestinationPolicy( CalendarResourceManager *manager,
TQWidget *parent = 0 ) :
DestinationPolicy( manager, parent ) {}
virtual ~StandardDestinationPolicy() {}
ResourceCalendar *destination( Incidence *incidence );
@ -117,6 +119,7 @@ class LIBKCAL_EXPORT CalendarResources :
AskDestinationPolicy( CalendarResourceManager *manager,
TQWidget *parent = 0 ) :
DestinationPolicy( manager, parent ) {}
virtual ~AskDestinationPolicy() {}
ResourceCalendar *destination( Incidence *incidence );

@ -34,6 +34,10 @@ AlarmClient::AlarmClient()
kdDebug(5850) << "AlarmClient::AlarmClient()" << endl;
}
AlarmClient::~AlarmClient()
{
}
void AlarmClient::startDaemon()
{
if ( kapp->dcopClient()->isApplicationRegistered( "korgac" ) ) {

@ -29,6 +29,7 @@ class AlarmClient
{
public:
AlarmClient();
virtual ~AlarmClient();
/**
Start alarm daemon.

@ -35,6 +35,8 @@ class CreateImapAccount : public TDEConfigPropagator::Change
class CustomWriter
{
public:
CustomWriter() {}
virtual ~CustomWriter() {}
virtual void writeFolder( TDEConfig &, int folderId ) = 0;
virtual void writeIds( int accountId, int transportId ) = 0;
};

Loading…
Cancel
Save