From 652114837848f6557ceca76032dedff3ebdc561a Mon Sep 17 00:00:00 2001 From: Jakob Leben Date: Mon, 14 Sep 2009 01:26:20 +0200 Subject: [PATCH] Qt4: fix segfault when exiting after a service discovery has been activated --- .../gui/qt4/components/playlist/playlist_model.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp index e271e2d609..fdb9f41c86 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.cpp +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp @@ -526,6 +526,7 @@ PLItem *PLModel::findByInput( PLItem *root, int i_id ) PLItem * PLModel::findInner( PLItem *root, int i_id, bool b_input ) { + if( !root ) return NULL; if( ( !b_input && i_cached_id == i_id) || ( b_input && i_cached_input_id ==i_id ) ) { @@ -755,14 +756,21 @@ void PLModel::insertChildren( PLItem *node, QList& items, int i_pos ) void PLModel::removeItem( PLItem *item ) { if( !item ) return; + if( currentItem == item ) { currentItem = NULL; emit currentChanged( QModelIndex() ); } - PLItem *parent = item->parentItem; - assert( parent ); - parent->removeChild( item ); + + if( item->parentItem ) item->parentItem->removeChild( item ); + else delete item; + + if(item == rootItem) + { + rootItem = NULL; + reset(); + } } /* This function must be entered WITH the playlist lock */ -- 2.39.2