diff --git a/src/codecs/doctermscodec.cpp b/src/codecs/doctermscodec.cpp --- a/src/codecs/doctermscodec.cpp +++ b/src/codecs/doctermscodec.cpp @@ -58,6 +58,11 @@ int prevWordBoundary = 0; for (int i = 0; i < full.size(); i++) { if (full[i] == 1) { + if (list.isEmpty()) { + // corrupted entry - no way to recover + return list; + } + QByteArray arr(full.constData() + prevWordBoundary, i - prevWordBoundary); list << list.last() + arr; diff --git a/src/engine/documentdb.cpp b/src/engine/documentdb.cpp --- a/src/engine/documentdb.cpp +++ b/src/engine/documentdb.cpp @@ -96,7 +96,11 @@ QByteArray arr = QByteArray::fromRawData(static_cast(val.mv_data), val.mv_size); DocTermsCodec codec; - return codec.decode(arr); + auto result = codec.decode(arr); + if (result.isEmpty()) { + qDebug() << "Document Terms DB contains corrupt data for " << docId; + } + return result; } void DocumentDB::del(quint64 docId)