diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/storage/phrase_index.cpp | 6 | ||||
-rw-r--r-- | src/storage/phrase_index_logger.h | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/storage/phrase_index.cpp b/src/storage/phrase_index.cpp index 64eb649..0424b3a 100644 --- a/src/storage/phrase_index.cpp +++ b/src/storage/phrase_index.cpp @@ -361,7 +361,11 @@ bool SubPhraseIndex::merge(PhraseIndexLogger * logger){ PhraseItem olditem, newitem, item, * tmpitem; while(logger->has_next_record()){ - logger->next_record(log_type, token, &oldchunk, &newchunk); + bool retval = logger->next_record + (log_type, token, &oldchunk, &newchunk); + + if (!retval) + break; switch(log_type){ case LOG_ADD_RECORD:{ diff --git a/src/storage/phrase_index_logger.h b/src/storage/phrase_index_logger.h index fe6070f..06f933e 100644 --- a/src/storage/phrase_index_logger.h +++ b/src/storage/phrase_index_logger.h @@ -59,6 +59,7 @@ class PhraseIndexLogger{ protected: MemoryChunk * m_chunk; size_t m_offset; + bool m_error; void reset(){ if ( m_chunk ){ @@ -66,6 +67,7 @@ protected: m_chunk = NULL; } m_offset = 0; + m_error = false; } public: /** @@ -74,7 +76,7 @@ public: * The constructor of the PhraseIndexLogger. * */ - PhraseIndexLogger():m_offset(0){ + PhraseIndexLogger():m_offset(0), m_error(false){ m_chunk = new MemoryChunk; } @@ -123,6 +125,9 @@ public: * */ bool has_next_record(){ + if (m_error) + return false; + return m_offset < m_chunk->size(); } @@ -204,7 +209,8 @@ public: break; } default: - assert(false); + m_error = true; + return false; } m_offset = offset; |