diff options
author | Peng Wu <alexepico@gmail.com> | 2020-10-14 10:52:04 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2020-10-14 10:52:04 +0800 |
commit | 78450c31880245a4f87c83b80ac0fc306a96104e (patch) | |
tree | 22e1abec780e896f50588fff2e79618d1776c1c1 | |
parent | 31b73dd2c05d2b258c251251765ade141a1eb3fd (diff) | |
download | libpinyin-78450c31880245a4f87c83b80ac0fc306a96104e.tar.gz libpinyin-78450c31880245a4f87c83b80ac0fc306a96104e.tar.xz libpinyin-78450c31880245a4f87c83b80ac0fc306a96104e.zip |
Fixes Berkeley DB cursor usage
-rw-r--r-- | src/storage/chewing_large_table2_bdb.cpp | 3 | ||||
-rw-r--r-- | src/storage/flexible_ngram_bdb.h | 4 | ||||
-rw-r--r-- | src/storage/ngram_bdb.cpp | 4 | ||||
-rw-r--r-- | src/storage/phrase_large_table3_bdb.cpp | 4 |
4 files changed, 15 insertions, 0 deletions
diff --git a/src/storage/chewing_large_table2_bdb.cpp b/src/storage/chewing_large_table2_bdb.cpp index 6741ffd..9813b57 100644 --- a/src/storage/chewing_large_table2_bdb.cpp +++ b/src/storage/chewing_large_table2_bdb.cpp @@ -448,6 +448,9 @@ bool ChewingLargeTable2::mask_out(phrase_token_t mask, #undef CASE + /* Initialize our DBTs. */ + memset(&db_key, 0, sizeof(DBT)); + memset(&db_data, 0, sizeof(DBT)); } assert(ret == DB_NOTFOUND); diff --git a/src/storage/flexible_ngram_bdb.h b/src/storage/flexible_ngram_bdb.h index 786cb76..e526e69 100644 --- a/src/storage/flexible_ngram_bdb.h +++ b/src/storage/flexible_ngram_bdb.h @@ -270,6 +270,10 @@ public: } phrase_token_t * token = (phrase_token_t *) key.data; g_array_append_val(items, *token); + + /* Initialize our DBTs. */ + memset(&key, 0, sizeof(DBT)); + memset(&data, 0, sizeof(DBT)); } if ( ret != DB_NOTFOUND ){ diff --git a/src/storage/ngram_bdb.cpp b/src/storage/ngram_bdb.cpp index a13b431..95afdbd 100644 --- a/src/storage/ngram_bdb.cpp +++ b/src/storage/ngram_bdb.cpp @@ -199,6 +199,10 @@ bool Bigram::get_all_items(GArray * items){ assert(key.size == sizeof(phrase_token_t)); phrase_token_t * token = (phrase_token_t *)key.data; g_array_append_val(items, *token); + + /* Initialize our DBTs. */ + memset(&key, 0, sizeof(DBT)); + memset(&data, 0, sizeof(DBT)); } assert (ret == DB_NOTFOUND); diff --git a/src/storage/phrase_large_table3_bdb.cpp b/src/storage/phrase_large_table3_bdb.cpp index 03632ae..cb2847e 100644 --- a/src/storage/phrase_large_table3_bdb.cpp +++ b/src/storage/phrase_large_table3_bdb.cpp @@ -302,6 +302,10 @@ bool PhraseLargeTable3::mask_out(phrase_token_t mask, db_data.size = entry.m_chunk.size(); int ret = cursorp->put(cursorp, &db_key, &db_data, DB_CURRENT); assert(ret == 0); + + /* Initialize our DBTs. */ + memset(&db_key, 0, sizeof(DBT)); + memset(&db_data, 0, sizeof(DBT)); } assert(ret == DB_NOTFOUND); |