diff --git a/honoka/plugins/skkdic.cpp b/honoka/plugins/skkdic.cpp index e9f699c..e4a79e6 100644 --- a/honoka/plugins/skkdic.cpp +++ b/honoka/plugins/skkdic.cpp @@ -142,37 +142,38 @@ } if (fd != -1) { - String t; - iconv.convert(t,text); char *p = mmapptr; bool okuri = true; - + String t; + iconv.convert(t,text); while(p < mmapptr + mmapsize) { + WideString w; if (strncmp(p,";; okuri-ari entries.",21) == 0) okuri = true; else if (strncmp(p,";; okuri-nasi entries.",22) == 0) okuri = false; else - if ((strncmp(p,t.c_str(),t.length()) == 0) && (p[t.length()] == ' ')) { - string r; - for(unsigned int i = 1;p[t.length() + i] != '\n';i ++) { - r += p[t.length() + i]; + if ((strncmp(p,t.c_str(),t.length()) == 0) && + (p[t.length()] == ' ') && + (strncmp(p,";;",2) != 0)) { + String s; + for(unsigned int i = 0;p[i] != '\n';i ++) { + if (p[i] == 0) break; + s += p[i]; } - WideString w; - iconv.convert(w,r); - vector l = parser(w); + iconv.convert(w,s); + vector l = parser(w.substr(text.length() + 1)); SKKDicEntry dic; - for(unsigned int i = 1;i < l.size();i ++) { + for(unsigned int i = 0;i < l.size();i ++) { SKKDicEntryData e = annotationParser(l[i]); dic.data.push_back(e); } dic.cache = true; dic.okuri = okuri; - iconv.convert(w,t); - dic_data.insert(pair(w,dic)); + dic_data.insert(pair(text,dic)); return dic.data; } - while(1) { + while(p[0] != '\n') { p ++; - if (*p == '\n') break; + if (p[0] == 0) break; } p ++; }