From d9757640de59761a8f2fcf55aeb80a2a6d18fcc7 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 25 Jun 2009 12:30:21 +0000 Subject: [PATCH] be more tolerant when reading kvtml entries without translation would crash BUG: 191485 svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=987047 --- keduvocdocument/keduvockvtml2reader.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index 3aa8bea..30b6ce4 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -303,14 +303,8 @@ bool KEduVocKvtml2Reader::readEntry( QDomElement &entryElement ) } } - // read translation children QDomNodeList translationList = entryElement.elementsByTagName( KVTML_TRANSLATION ); - if ( translationList.length() <= 0 ) { - delete expr; - m_errorMessage = i18n( "no translations found" ); - return false; // at least one translation is required - } for ( int i = 0; i < translationList.count(); ++i ) { currentElement = translationList.item( i ).toElement(); @@ -321,6 +315,13 @@ bool KEduVocKvtml2Reader::readEntry( QDomElement &entryElement ) } } + if ( expr->translationIndices().size() == 0 ) { + kDebug() << "Found entry with no words in it." << id; + expr->setTranslation(0, QString()); + } + + Q_ASSERT(expr); + // TODO: probably should insert at id position with a check to see if it exists // may be useful for detecting corrupt documents m_allEntries[id] = expr; @@ -398,7 +399,9 @@ bool KEduVocKvtml2Reader::readLesson( KEduVocLesson* parentLesson, QDomElement & bool result = false; int entryId = currentElement.attribute( KVTML_ID ).toInt( &result ); if(result) { - lesson->appendEntry( m_allEntries[entryId] ); + if (m_allEntries[entryId]) { + lesson->appendEntry( m_allEntries[entryId] ); + } } currentElement = currentElement.nextSiblingElement( KVTML_ENTRY ); } -- 2.47.3