ПРИМЕЧАНИЕ: Я являюсь автором RegexKitLite.
Это внутренняя ошибка утверждения в RegexKitLite. Существует множество встроенных внутренних контрольных проверок. Это говорит о том, что после извлечения кэшированного скомпилированного регулярного выражения из кэша извлеченное кэшированное регулярное выражение не настроено точно так, как должно быть по какой-то причине.
Лучшее, что вы можете сделать, это отправить отчет об ошибке в sourceforge.net RegexKit bug tracker. Если это вообще возможно, отправьте тестовый пример, который воспроизводит ошибку. Это полное, дикое, из голубого предположения, но на основе сообщения об утверждении, я бы сказал, что он имеет какое-то отношение к операциям совпадения, в которых вы используете параметр range:
, и этот диапазон постоянно «перемещается», и сокращение. Этот диапазон может пересекать размер малого/большого буфера, где-то около 2048 символов. Другой возможностью является поиск строк, содержащих символы Unicode, а RegexKitLite использует строковый прямой буфер, возможно, в изменяемой строке, а буфер резервного копирования перераспределяется, поскольку он вырос или сжался ... или измененная строка, которая была «не-Unicode», была мутирована и теперь содержит символы Unicode, и она переключается с кэшированного преобразования UTF-16 в прямой буфер. string
Надеюсь, , что поможет вам сузить угол, который вызывает ошибку утверждения. Эй, по крайней мере, это detec задание проблемы вместо того, чтобы ломаться и сегрессировать или возвращать фиктивные строки результата. :)
Есть ли что-нибудь особенно уникальное в отношении типов струн, которые вы используете? Возможно ли, что вы пытаетесь выполнить одну и ту же операцию в нескольких потоках? – dreamlax
Это звучит как проблема с RegexKitLite и не имеет никакого отношения к регулярным выражениям в sé. Вероятно, вам повезет на сайте, посвященном RegexKitLite. –