From 45a5df5856f37d7374c0a440a66ea76cb892cb2c Mon Sep 17 00:00:00 2001 From: wyy Date: Sat, 7 Dec 2013 15:22:00 +0800 Subject: [PATCH] fix bug's in SegmentBase where using filterAscii --- src/SegmentBase.hpp | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/src/SegmentBase.hpp b/src/SegmentBase.hpp index 114f2f3..1e6168e 100644 --- a/src/SegmentBase.hpp +++ b/src/SegmentBase.hpp @@ -40,12 +40,14 @@ namespace CppJieba Unicode unico; while(offset < size) { - if(-1 == (ret = filterAscii(cstr + offset, size, len))) + const char * const nstr = cstr + offset; + uint nsize = size - offset; + if(-1 == (ret = filterAscii(nstr, nsize, len)) || 0 == len || len > nsize) { LogFatal("str[%s] illegal.", cstr); return false; } - subs.assign(cstr + offset, len); + subs.assign(nstr, len); if(!ret) { res.push_back(subs); @@ -60,32 +62,9 @@ namespace CppJieba } cut(unico.begin(), unico.end(), res); } - if(len == 0) - { - LogFatal("str[%s] illegal.", cstr); - return false; - } offset += len; } return true; - //ChineseFilter filter; - //filter.feed(str); - //for(ChineseFilter::iterator it = filter.begin(); it != filter.end(); it++) - //{ - // if(it.charType == CHWORD) - // { - // cut(it.begin, it.end, res); - // } - // else - // { - // string tmp; - // if(TransCode::encode(it.begin, it.end, tmp)) - // { - // res.push_back(tmp); - // } - // } - //} - //return true; } };