SVN commit 918737 by rahn: - Don't crash if Marble doesn't find its plugins M +1 -2 MarbleControlBox.cpp M +8 -5 PluginManager.cpp --- trunk/KDE/kdeedu/marble/src/lib/MarbleControlBox.cpp #918736:918737 @@ -179,7 +179,7 @@ d->uiWidget.projectionComboBox->setEnabled( true ); d->m_runnerManager = new MarbleRunnerManager( this ); - + connect( d->m_runnerManager, SIGNAL( modelChanged( MarblePlacemarkModel* ) ), this, SLOT( setLocations( MarblePlacemarkModel* ) ) ); @@ -187,7 +187,6 @@ this, SLOT( searchLineChanged( const QString& ) ) ); connect( d->uiWidget.searchLineEdit, SIGNAL( returnPressed() ), this, SLOT( searchReturnPressed() ) ); - } MarbleControlBox::~MarbleControlBox() --- trunk/KDE/kdeedu/marble/src/lib/PluginManager.cpp #918736:918737 @@ -92,13 +92,16 @@ qDebug() << fileName << " - " << MarbleDirs::pluginPath( fileName ); QPluginLoader loader( MarbleDirs::pluginPath( fileName ) ); - QObject *obj = loader.instance(); - MarbleRenderPlugin* layerPlugin = qobject_cast(obj); - MarbleRenderPlugin* instance = layerPlugin->instance(); + QObject * obj = loader.instance(); - if( layerPlugin && instance ) { - d->m_renderPlugins.append( instance ); + MarbleRenderPlugin * layerPlugin; + if ( obj ) { + layerPlugin = qobject_cast(obj); } + + if( obj && layerPlugin ) { + d->m_renderPlugins.append( layerPlugin ); + } else { qDebug() << "Plugin Failure: " << fileName << " is not a valid Marble Plugin:"; qDebug() << loader.errorString();