Описание:
Ошибка привела к остановке взаимодействия программы с Windows.
Сигнатура проблемы:
Имя события проблемы: AppHangB1
Имя приложения: AkelPad.exe
Версия приложения: 4.9.1.0
Отметка времени приложения: 5413570f
Сигнатура зависания: 4493
Тип зависания: 0
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
Доп. сигнатура зависания 1: 449372ca9f28b7848783bf8964514e82
Доп. сигнатура зависания 2: ddc1
Доп. сигнатура зависания 3: ddc172ecc60f38a4ce00cadeaa736c96
Доп. сигнатура зависания 4: 4493
Доп. сигнатура зависания 5: 449372ca9f28b7848783bf8964514e82
Доп. сигнатура зависания 6: ddc1
Доп. сигнатура зависания 7: ddc172ecc60f38a4ce00cadeaa736c96
Не совсем понял: в чем суть теста? AkelPad не должен падать в любом случае?
З.Ы. В QuotesRE 189 правил, однако...
Добавлено:
Опять гоню, успел откатиться на Last modification: 2014.01.11 20:20 и поленился сливать - взял крайнюю версию из репозитория. С версией отсюда вроде нормально.
Posted: Sat Sep 13, 2014 5:42 am
by Instructor
Skif_off wrote:AkelPad не должен падать в любом случае?
Да. Не совсем понял - было ли падение с последней тестовой версией? Если было, то какие условия были сопутствующими?
Я так пониманию, что на текущий момент с этим файлом падают все версии 4.9.0+, из-за того что правила жадности регекспов поменялись.
У меня на тестовом файле крепко подвисают Акелы 4.9.0 и этот тестовый Акель.
Описание:
Ошибка привела к остановке взаимодействия программы с Windows.
Сигнатура проблемы:
Имя события проблемы: AppHangB1
Имя приложения: AkelPad.exe
Версия приложения: 4.9.1.0
Отметка времени приложения: 5415e16e
Сигнатура зависания: 6042
Тип зависания: 0
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
Доп. сигнатура зависания 1: 6042ffbf9b0e7fde3b118b2538a03518
Доп. сигнатура зависания 2: d3c6
Доп. сигнатура зависания 3: d3c6e11a77d25627d30d75aa03fa0bf4
Доп. сигнатура зависания 4: 6042
Доп. сигнатура зависания 5: 6042ffbf9b0e7fde3b118b2538a03518
Доп. сигнатура зависания 6: d3c6
Доп. сигнатура зависания 7: d3c6e11a77d25627d30d75aa03fa0bf4
.
Может быть, ладно с ним? Случай, кажется, слишком частный, Drugmix рано или поздно внесет изменения.
Posted: Sun Sep 14, 2014 7:57 pm
by Drugmix
Skif_off
а я уже внёс
С ahk.coder с гитхаба по той ссылке - у меня пока ничего не падает, правда там все самые сложные случаи подсветки (почти всё, кроме команд) - закомментировано, но я потихоньку и эти правила пилю.
Posted: Sun Sep 14, 2014 8:35 pm
by Drugmix
Если хочется побороться с падениями, то вот, например, правило под старый парсер:
которое способно сейчас положить акелпад на файле с длинными строками, содержащими множественные кавычки, например на этом, если его быстро поскроллить туда-сюда.
завешивало Акел на файле, содержащем "GoTo". Я признаю, что выражение вида 'a(b*c*)*' выглядит несколько странно но (!) зависон наблюдался из поиска и кодера, а в QSearch всё работало нормально. Собственно, из-за чего и не репортил - привык проверять корректность регулярок в QSearch и никак не мог отловить проблемное выражение.
Posted: Mon Sep 15, 2014 7:43 am
by Drugmix
Serge Yolkin wrote:Я признаю, что выражение вида 'a(b*c*)*' выглядит несколько странно
Вовсе не странное выражение.
Единственное, что с новым парсером, по моему опыту, лучше жадность явно задавать: хочется жадности? 'a(b*+c*+)*+'.
Хочется скромности? 'a(b*?c*?)*?' или просто 'a'
Posted: Mon Sep 15, 2014 8:29 am
by DV
Serge Yolkin wrote:Я признаю, что выражение вида 'a(b*c*)*' выглядит несколько странно но (!) зависон наблюдался из поиска и кодера, а в QSearch всё работало нормально.
В QSearch применяется "хак", убирающий завершающие * или + (кроме экранированных \* и \+ ).
Смысл "хака" в том, что выражения вида .* и .+ до сих пор остаются "сверхжадными", выделяя весь файл до конца, что неприемлемо для QSearch в режиме "поиска на лету" с регулярными выражениями (так как при наборе выражения вида A.+B в процессе набора A.+ выделялся бы весь файл до конца, а с донабором завершающего B выделение отступало бы назад).
Оба правила приводят к ошибке.
Суть правила заключается в том, чтобы подсвечивать только такой ByRef, перед которым находится открывающая скобка (и сколько угодно пробелов после неё).
Positive lookbehind'ы поломались?
С другой стороны, они теперь и не нужны: старых конфликтов между двумя разными правилами я больше не наблюдаю, всё что не попадает в группу захвата - остаётся "доступным" для других правил, так что во избежание возможных новых поломок - я бы лучше оставил всё, как есть сейчас.
Posted: Mon Sep 15, 2014 9:41 am
by Drugmix
Ещё, не получается сделать правило для раскраски := (оператора присваивания значения)