我用在ICU库附带的Mac OS X及iPhone OS内置的精彩RegexKitLite框架。它一直一帆风顺到目前为止,在该错误搜索匹配时间歇出现的异常:

Internal Error
Invalid parameter not satisfying:
(cacheSlot->setToHash == buffer->hash) && (cacheSlot->setToLength == buffer->length) && (cacheSlot->setToUniChar == buffer->uniChar)

任何想法可能导致此?

有帮助吗?

解决方案

注意:我RegexKitLite的作者

这是内RegexKitLite内部断言失败。有很多内置的内部断言检查。这一个是说,检索从缓存缓存编译正则表达式后,检索到的缓存正则表达式不成立,正是因为它应该是出于某种原因。

你能做的最好的事情是在 sourceforge.net RegexKit bug跟踪系统提交错误报告。如果可能的话,提交再现错误的测试情况。这是一个总的,野生的,出蓝色的猜测,而是基于断言的消息,我会打赌,它是与匹配操作中,您使用的是range:参数,并且范围不断“运动”和收缩。这个范围可以跨过小/大缓冲器大小,某处大约2048个字符。另一种可能性是在搜索包含Unicode字符和RegexKitLite使用串直接缓冲液,可能在一个可变的字符串和所述背衬缓冲器已被重新分配,因为串它增长或收缩...或者,一个可变的字符串是“非Unicode”已经被突变,现在包含Unicode字符,它具有从缓存的UTF-16转换到琴弦开关直接缓冲液。

我们希望,这将有助于你缩小所引发断言失败的极端情况。嘿,至少它的检测问题,而不是在不厌其烦地和赛格断层或返回假的结果的字符串。 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top