From aa31075db890e53bc6cec08d99ba4fb250fcab12 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Thu, 21 Jun 2012 13:18:18 +0800 Subject: refine asserts in large tables --- src/include/novel_types.h | 1 + src/storage/chewing_large_table.cpp | 6 ++++-- src/storage/phrase_large_table.cpp | 8 ++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/include/novel_types.h b/src/include/novel_types.h index 014c11a..706afd4 100644 --- a/src/include/novel_types.h +++ b/src/include/novel_types.h @@ -78,6 +78,7 @@ enum ErrorResult{ ERROR_OK = 0, /* operate ok */ ERROR_INSERT_ITEM_EXISTS, /* item already exists */ ERROR_REMOVE_ITEM_DONOT_EXISTS, /* item don't exists */ + ERROR_PHRASE_TOO_LONG, /* the phrase is too long */ ERROR_NO_SUB_PHRASE_INDEX, /* sub phrase index is not loaded */ ERROR_NO_ITEM, /* item has a null slot */ ERROR_OUT_OF_RANGE, /* beyond the end of the sub phrase index */ diff --git a/src/storage/chewing_large_table.cpp b/src/storage/chewing_large_table.cpp index 9185976..ff53b75 100644 --- a/src/storage/chewing_large_table.cpp +++ b/src/storage/chewing_large_table.cpp @@ -490,7 +490,8 @@ int ChewingBitmapIndexLevel::remove_index(int phrase_length, int ChewingLengthIndexLevel::add_index(int phrase_length, /* in */ ChewingKey keys[], /* in */ phrase_token_t token) { - assert(phrase_length + 1 < MAX_PHRASE_LENGTH); + if (!(phrase_length + 1 < MAX_PHRASE_LENGTH)) + return ERROR_PHRASE_TOO_LONG; if (m_chewing_array_indexes->len <= phrase_length) g_array_set_size(m_chewing_array_indexes, phrase_length + 1); @@ -532,7 +533,8 @@ int ChewingLengthIndexLevel::add_index(int phrase_length, int ChewingLengthIndexLevel::remove_index(int phrase_length, /* in */ ChewingKey keys[], /* in */ phrase_token_t token) { - assert(phrase_length + 1 < MAX_PHRASE_LENGTH); + if (!(phrase_length + 1 < MAX_PHRASE_LENGTH)) + return ERROR_PHRASE_TOO_LONG; if (m_chewing_array_indexes->len <= phrase_length) return ERROR_REMOVE_ITEM_DONOT_EXISTS; diff --git a/src/storage/phrase_large_table.cpp b/src/storage/phrase_large_table.cpp index 195024e..1207b17 100644 --- a/src/storage/phrase_large_table.cpp +++ b/src/storage/phrase_large_table.cpp @@ -242,7 +242,9 @@ int PhraseBitmapIndexLevel::remove_index( int phrase_length, /* in */ ucs4_t phr } int PhraseLengthIndexLevel::add_index( int phrase_length, /* in */ ucs4_t phrase[], /* in */ phrase_token_t token){ - assert(phrase_length + 1 < MAX_PHRASE_LENGTH); + if (!(phrase_length + 1 < MAX_PHRASE_LENGTH)) + return ERROR_PHRASE_TOO_LONG; + if ( m_phrase_array_indexes -> len <= phrase_length ) g_array_set_size(m_phrase_array_indexes, phrase_length + 1); @@ -280,7 +282,9 @@ int PhraseLengthIndexLevel::add_index( int phrase_length, /* in */ ucs4_t phrase } int PhraseLengthIndexLevel::remove_index( int phrase_length, /* in */ ucs4_t phrase[], /* out */ phrase_token_t & token){ - assert(phrase_length + 1 < MAX_PHRASE_LENGTH); + if (!(phrase_length + 1 < MAX_PHRASE_LENGTH)) + return ERROR_PHRASE_TOO_LONG; + if ( m_phrase_array_indexes -> len <= phrase_length ) return ERROR_REMOVE_ITEM_DONOT_EXISTS; #define CASE(len) case len: \ -- cgit