Git commit 2abcb1cbe6a5a2d6b8d9da1344bd80dcf1f550b6 by Johannes Zarl. Committed on 01/05/2013 at 00:58. Pushed by johanneszarl into branch 'master'. Fix crash when member group category doesn't exist. When the category of the member-group does not exist, a warning is printed on the console and a matching category is created. CCBUG: 319135 M +7 -0 XMLDB/FileReader.cpp http://commits.kde.org/kphotoalbum/2abcb1cbe6a5a2d6b8d9da1344bd80dcf1f550b6 diff --git a/XMLDB/FileReader.cpp b/XMLDB/FileReader.cpp index 62f10e6..b1da9a6 100644 --- a/XMLDB/FileReader.cpp +++ b/XMLDB/FileReader.cpp @@ -34,6 +34,7 @@ #include #include #include "CompressFileInfo.h" +#include = void XMLDB::FileReader::read( const QString& configFile ) { @@ -249,6 +250,12 @@ void XMLDB::FileReader::loadMemberGroups( ReaderPtr re= ader ) QStringList members =3D reader->attribute(_members_).split= ( QString::fromLatin1( "," ), QString::SkipEmptyParts ); for( QStringList::Iterator membersIt =3D members.begin(); = membersIt !=3D members.end(); ++membersIt ) { DB::CategoryPtr catPtr =3D _db->_categoryCollection.ca= tegoryForName( category ); + if (catPtr.isNull()) + { // category was not declared in "Categories" + qWarning() << "File corruption in index.xml. Inser= ting missing category: " << category; + catPtr =3D new XMLCategory(category, QString::from= Utf8("dialog-warning"), DB::Category::TreeView, 32, false); + _db->_categoryCollection.addCategory( catPtr ); + } XMLCategory* cat =3D static_cast( catPtr= .data() ); QString member =3D cat->nameForId( (*membersIt).toInt(= ) ); Q_ASSERT( !member.isNull() );