wyymichael / paoding

Automatically exported from code.google.com/p/paoding
0 stars 0 forks source link

查找计量单位引起的高亮越界错误 #48

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
版本: paoding-analysis-2.0.4-beta

现象:高亮报错:
      Token 北京 exceeds length of provided text sized 7649

分析:
据查,“北京”是该文档的最后一个词,Paoding给出该词的star
tOffset是
7648,endOffset是7650,显然7650超出了文档的边界。 
进一步分析,发现是在文档
的中间部分偏移开始算错的,
         ... 并非平常检讨的套话!1986年2月胡绳 ...

在"1986年"之前的Token偏移都是对的,在这之后的偏移都往后错
了一位,导致最后的
Token越界。

代码问题:
Debug之后,发现错误是因为"1986年"正好处于Tokenizer 
Buffer的末尾,在
Tokenizer处理完"1986"后,因为它是个数字,所以要继续判断它��
�面是否是计量单位
(参见NumberKnife::collectLimit()),正是这段代码导致了问题。��
�竟然查
出"1986"后面的单位是“年级”,显然这是个错误的结果,据��
�计应该是该段代码在查
找单位时越出了Buffer的边界,取了无效的字符。

将查找计量单位的代码注释后该问题消失。但无法确定在别��
�是否还有同样的问题存在。

Original issue reported on code.google.com by reno....@gmail.com on 3 Dec 2009 at 4:02

GoogleCodeExporter commented 9 years ago
能加一下我的gtalk吗?
qieqie.wang@gmail.com

Original comment by qieqie.wang on 7 Dec 2009 at 2:50