Regular Expression Search and Replace (RESearch)

Здесь можно обсудить ваш любимый плагин.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Latest post of the previous page:

Cavaler, что-нибудь по поводу ранее обсуждавшихся нативного LUA и обратного поиска слышно?
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

Re: Regular Expression Search and Replace (RESearch)

Post by DV »

Cavaler wrote:RESearch821.rar
Да, проблема с Grep починилась.
Однако, похоже, наткнулся на общую проблему RESearch в целом...
Что я делал: запускал Grep и Search в корневой папке проекта, в которой содержатся как исходники, так и скомпилированные файлы. В частности, там есть файл *.ipch размером 32 МБ. И как только RESearch дошёл до этого файла, он выделил порядка 600 МБ памяти и выдал:


Как это воспроизвести:
1. Идём в папку "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib" или аналогичную, в которой есть бинарный файл размером более 30 МБ
2. Запускаем Search или Grep с регулярными выражениями - и получаем окошечко выше.
difr
Posts: 16
Joined: Sat 26 Oct, 2013 23:08
Has thanked: 2 times

Re: Regular Expression Search and Replace (RESearch)

Post by difr »

при [x] Use real end-of-line sequences
замена CR на пусто

приводит к ошибке

а так хороший плугин, спасибо за труды.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

difr wrote:при [x] Use real end-of-line sequences
замена CR на пусто

приводит к ошибке

а так хороший плугин, спасибо за труды.

Code: Select all

Known bugs:
	- Replace changing part of (real) EOL crashes
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

DV wrote:
Cavaler wrote:RESearch821.rar
Да, проблема с Grep починилась.
Однако, похоже, наткнулся на общую проблему RESearch в целом...
Что я делал: запускал Grep и Search в корневой папке проекта, в которой содержатся как исходники, так и скомпилированные файлы. В частности, там есть файл *.ipch размером 32 МБ. И как только RESearch дошёл до этого файла, он выделил порядка 600 МБ памяти и выдал:


Как это воспроизвести:
1. Идём в папку "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib" или аналогичную, в которой есть бинарный файл размером более 30 МБ
2. Запускаем Search или Grep с регулярными выражениями - и получаем окошечко выше.
Ну вообще на больших файлах он хавает память как может, засасывая файл целиком и перекодируя весь. Но падать конечно не должен.
Пока не смог повторить, пару файлов в 120Mb обработал, равно как и каталог с либами...
Моржет ты сольешь http://www.kostrom.spb.ru/FILES/RESearchPDB.rar да прицепишься отладчиком?
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

Re: Regular Expression Search and Replace (RESearch)

Post by DV »

Cavaler wrote:RESearchPDB.rar




Т.е. пытается выделить 400 с чем-то МБ и бросает std::bad_alloc.
Без исходников непонятно, каким образом SetString с длиной 17 728 914 приводит к запросу размера 423 540 084 у вектора.
Возможно, имеет смысл ввести в RESearch ограничение на максимальную длину обрабатываемой строки?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

DV wrote:Возможно, имеет смысл ввести в RESearch ограничение на максимальную длину обрабатываемой строки?
Это мы уже проезжали, и тогда хором пришли к тому, что лучше без ограничений - лучше пусть падает, чем обработает файл не так, как ожидается. К тому же в зависимости от обработки он кушать может по разному, так что ограничение само по себе не панацея. Но вполне возможно, что опция - "разбивать длинные строки на подстроки по исчерпанию памяти" и не помешала бы.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Regular Expression Search and Replace (RESearch)

Post by HaRT »

AleXH wrote:хором пришли к тому, что лучше без ограничений - лучше пусть падает, чем обработает файл не так, как ожидается
Ну-ка, ну-ка, это кто и где хором предпочёл падение (crash)? Насколько я помню, речь шла о завершении текущей операции неуспехом (fail). Это совсем не то же самое.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Regular Expression Search and Replace (RESearch)

Post by DrKnS »

Code: Select all

╔════ Exception occurred ════
║       string too long
╟────────────────────────────
║ { Terminate Far } [ Debug ]
А зачем это плагин кидает наружу свои C++ exceptions?
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

Re: Regular Expression Search and Replace (RESearch)

Post by DV »

HaRT wrote:Насколько я помню, речь шла о завершении текущей операции неуспехом (fail).
Мне в этом плане нравится подход плагина arclite: если в ходе работе произошли какие-то ошибки, то в конце операции (в конце поиска в случае RESearch) вывести список файлов, которые были обработаны некорректно.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

DV wrote:Без исходников непонятно, каким образом SetString с длиной 17 728 914 приводит к запросу размера 423 540 084 у вектора.
Возможно, имеет смысл ввести в RESearch ограничение на максимальную длину обрабатываемой строки?
Как приводит к такому запросу. CUTF8Traverse это хелпер, сопоставляющий смещения в исходной строке и в UTF-8, и обратно. Соответственно каждый символ исходной строки может быть максимум 4 символа utf-8б по 4 байта на элемент, итого - 280Mb, почему пытается хавать еще в 2 раза больше я как-то пока не понял.
UPD: Кстати да, баг, я же уже знаю в этом месте длину utf-8 строки, можно сильно меньше памяти хавать.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

Cavaler wrote:
DV wrote:Без исходников непонятно, каким образом SetString с длиной 17 728 914 приводит к запросу размера 423 540 084 у вектора.
Возможно, имеет смысл ввести в RESearch ограничение на максимальную длину обрабатываемой строки?
Как приводит к такому запросу. CUTF8Traverse это хелпер, сопоставляющий смещения в исходной строке и в UTF-8, и обратно. Соответственно каждый символ исходной строки может быть максимум 4 символа utf-8б по 4 байта на элемент, итого - 280Mb, почему пытается хавать еще в 2 раза больше я как-то пока не понял.
UPD: Кстати да, баг, я же уже знаю в этом месте длину utf-8 строки, можно сильно меньше памяти хавать.
А вообще с учетом того, что с какого-то момента в PCRE появилась работа с UTF-16, надо все на нее переводить, гораздо меньше хлопот...
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Regular Expression Search and Replace (RESearch)

Post by HaRT »

Cavaler wrote:А вообще с учетом того, что с какого-то момента в PCRE появилась работа с UTF-16, надо все на нее переводить, гораздо меньше хлопот...
Почему меньше? Она ведь тоже переменной длины. Это ведь не UCS-2.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

HaRT wrote:
Cavaler wrote:А вообще с учетом того, что с какого-то момента в PCRE появилась работа с UTF-16, надо все на нее переводить, гораздо меньше хлопот...
Почему меньше? Она ведь тоже переменной длины. Это ведь не UCS-2.
Честно говоря, я забиваю толстый болт на то, что это не одно и то же. Вероятность встретить коды > 0xFFFF в реальности стремится к нулю. Я не думаю, что и сам Far2/3 их корректно переварит.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

Если вдруг кому-то зачем-то любопытно, опишу, как же сейчас в RESearch устроена работа с файлами - заодно у себя в голове причешу.


Короче весело. Зато, если все правильно написано, должно более-менее быстро работать.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Re: Regular Expression Search and Replace (RESearch)

Post by 2useven10 »

Я не думаю, что и сам Far2/3 их корректно переварит.
Не переварит.
Post Reply

Return to “Обсуждение плагинов”