diff --git a/src/libwrapper.cpp b/src/libwrapper.cpp index 20c614c..ff8e771 100644 --- a/src/libwrapper.cpp +++ b/src/libwrapper.cpp @@ -179,6 +179,8 @@ static std::string parse_data(const gchar *data, bool colorize_output) case 'k': case 'y': sec_size = strlen(p); + if (sec_size) + res += std::string(p, sec_size); sec_size++; break; case 'W': diff --git a/src/stardict_lib.cpp b/src/stardict_lib.cpp index 25f1b5e..b7aa60b 100644 --- a/src/stardict_lib.cpp +++ b/src/stardict_lib.cpp @@ -214,6 +214,7 @@ gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size) case 'l': case 'g': case 'x': + case 'k': data_size += sizeof(gchar); break; case 'W': @@ -243,6 +244,7 @@ gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size) case 'l': case 'g': case 'x': + case 'k': sec_size = strlen(p2)+1; memcpy(p1, p2, sec_size); p1+=sec_size; @@ -280,6 +282,7 @@ gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size) case 'l': case 'g': case 'x': + case 'k': memcpy(p1, p2, sec_size); p1 += sec_size; *p1='\0';//add the end up '\0'; @@ -348,6 +351,7 @@ bool DictBase::SearchData(std::vector &SearchWords, guint32 idxitem case 'l': case 'g': case 'x': + case 'k': for (j=0; j &SearchWords, guint32 idxitem case 'l': case 'g': case 'x': + case 'k': sec_size = idxitem_size - (p-origin_data); for (j=0; j &SearchWords, guint32 idxitem case 'l': case 'g': case 'x': + case 'k': for (j=0; j