diff options
author | Peng Wu <alexepico@gmail.com> | 2011-10-27 18:05:44 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2011-10-27 18:05:44 +0800 |
commit | 85a934c958a036d17b548919d2264825eae8a68b (patch) | |
tree | 9560c6a55aace9baf4646d27d07835c0446ed42a /src/pinyin.cpp | |
parent | b6ddd796eb5169cb372c9baf63607dcc02458d30 (diff) | |
download | libpinyin-85a934c958a036d17b548919d2264825eae8a68b.tar.gz libpinyin-85a934c958a036d17b548919d2264825eae8a68b.tar.xz libpinyin-85a934c958a036d17b548919d2264825eae8a68b.zip |
fixes save_db
Diffstat (limited to 'src/pinyin.cpp')
-rw-r--r-- | src/pinyin.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp index 46269e1..8832321 100644 --- a/src/pinyin.cpp +++ b/src/pinyin.cpp @@ -63,6 +63,7 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){ fprintf(stderr, "open %s failed!\n", filename); return NULL; } + g_free(filename); context->m_pinyin_table->load(chunk); context->m_validator.initialize(context->m_pinyin_table); @@ -77,6 +78,7 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){ fprintf(stderr, "open %s failed!\n", filename); return NULL; } + g_free(filename); context->m_phrase_table->load(chunk); context->m_phrase_index = new FacadePhraseIndex; @@ -86,9 +88,11 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){ fprintf(stderr, "open %s failed!\n", filename); return NULL; } + g_free(filename); context->m_phrase_index->load(1, chunk); filename = g_build_filename(context->m_user_dir, "gb_char.dbin", NULL); log->load(filename); + g_free(filename); context->m_phrase_index->merge(1, log); log = new MemoryChunk; chunk = new MemoryChunk; @@ -97,17 +101,22 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){ fprintf(stderr, "open %s failed!\n", filename); return NULL; } + g_free(filename); context->m_phrase_index->load(2, chunk); filename = g_build_filename(context->m_user_dir, "gbk_char.dbin", NULL); log->load(filename); + g_free(filename); context->m_phrase_index->merge(2, log); context->m_system_bigram = new Bigram; filename = g_build_filename(context->m_system_dir, "bigram.db", NULL); context->m_system_bigram->attach(filename, ATTACH_READONLY); + g_free(filename); + context->m_user_bigram = new Bigram; filename = g_build_filename(context->m_user_dir, "user.db", NULL); context->m_user_bigram->load_db(filename); + g_free(filename); context->m_pinyin_lookup = new PinyinLookup ( &(context->m_custom), context->m_pinyin_table, @@ -134,24 +143,30 @@ bool pinyin_save(pinyin_context_t * context){ gchar * filename = g_build_filename(context->m_system_dir, "gb_char.bin", NULL); oldchunk->load(filename); + g_free(filename); context->m_phrase_index->diff(1, oldchunk, newlog); filename = g_build_filename(context->m_user_dir, "gb_char.dbin", NULL); newlog->save(filename); + g_free(filename); delete newlog; oldchunk = new MemoryChunk; newlog = new MemoryChunk; filename = g_build_filename(context->m_system_dir, "gbk_char.bin", NULL); oldchunk->load(filename); + g_free(filename); + context->m_phrase_index->diff(2, oldchunk, newlog); filename = g_build_filename(context->m_user_dir, "gbk_char.dbin", NULL); newlog->save(filename); + g_free(filename); delete newlog; filename = g_build_filename(context->m_user_dir, "user.db", NULL); context->m_user_bigram->save_db(filename); + g_free(filename); context->m_modified = false; return true; |