fixes for last commit

This commit is contained in:
Evgeniy Dushistov
2014-10-24 18:03:30 +00:00
parent ace12ea2bb
commit c78d59de5f
2 changed files with 8 additions and 0 deletions

View File

@@ -179,6 +179,8 @@ static std::string parse_data(const gchar *data, bool colorize_output)
case 'k': case 'k':
case 'y': case 'y':
sec_size = strlen(p); sec_size = strlen(p);
if (sec_size)
res += std::string(p, sec_size);
sec_size++; sec_size++;
break; break;
case 'W': case 'W':

View File

@@ -214,6 +214,7 @@ gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size)
case 'l': case 'l':
case 'g': case 'g':
case 'x': case 'x':
case 'k':
data_size += sizeof(gchar); data_size += sizeof(gchar);
break; break;
case 'W': case 'W':
@@ -243,6 +244,7 @@ gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size)
case 'l': case 'l':
case 'g': case 'g':
case 'x': case 'x':
case 'k':
sec_size = strlen(p2)+1; sec_size = strlen(p2)+1;
memcpy(p1, p2, sec_size); memcpy(p1, p2, sec_size);
p1+=sec_size; p1+=sec_size;
@@ -280,6 +282,7 @@ gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size)
case 'l': case 'l':
case 'g': case 'g':
case 'x': case 'x':
case 'k':
memcpy(p1, p2, sec_size); memcpy(p1, p2, sec_size);
p1 += sec_size; p1 += sec_size;
*p1='\0';//add the end up '\0'; *p1='\0';//add the end up '\0';
@@ -348,6 +351,7 @@ bool DictBase::SearchData(std::vector<std::string> &SearchWords, guint32 idxitem
case 'l': case 'l':
case 'g': case 'g':
case 'x': case 'x':
case 'k':
for (j=0; j<nWord; j++) for (j=0; j<nWord; j++)
if (!WordFind[j] && strstr(p, SearchWords[j].c_str())) { if (!WordFind[j] && strstr(p, SearchWords[j].c_str())) {
WordFind[j] = true; WordFind[j] = true;
@@ -377,6 +381,7 @@ bool DictBase::SearchData(std::vector<std::string> &SearchWords, guint32 idxitem
case 'l': case 'l':
case 'g': case 'g':
case 'x': case 'x':
case 'k':
sec_size = idxitem_size - (p-origin_data); sec_size = idxitem_size - (p-origin_data);
for (j=0; j<nWord; j++) for (j=0; j<nWord; j++)
if (!WordFind[j] && if (!WordFind[j] &&
@@ -399,6 +404,7 @@ bool DictBase::SearchData(std::vector<std::string> &SearchWords, guint32 idxitem
case 'l': case 'l':
case 'g': case 'g':
case 'x': case 'x':
case 'k':
for (j=0; j<nWord; j++) for (j=0; j<nWord; j++)
if (!WordFind[j] && strstr(p, SearchWords[j].c_str())) { if (!WordFind[j] && strstr(p, SearchWords[j].c_str())) {
WordFind[j] = true; WordFind[j] = true;