[MSVC8][BUG] AV in CAtlRegExp
#include <atlbase.h>
#include <atlstr.h>
#include <atlrx.h>
int _tmain(int argc, _TCHAR* argv[])
{
// Допустим у нас имеется выделенная память
char * p = (char *)::VirtualAlloc(0, 16384, MEM_COMMIT, PAGE_READWRITE);
DWORD old;
// , а следующая страница недоступна
::VirtualProtect(p + 8192, 8192, PAGE_NOACCESS, &old);
// В конце строка
char * s = p + 8192 - 8;
// нулевой длинны
*s = '\0' ;
// а после неё - ненулевой мусор
memcpy(s + 1, "abcdefg" , 7);
// такая cтрока вполне валидна
printf("An empty string '%s'" , s);
// но вот CAtlRegExp на ней падает
CAtlRegExp<CAtlRECharTraitsA> rx;
rx.Parse("aaaaaabbbbcccc" );
CAtlREMatchContext<CAtlRECharTraitsA> ctx;
rx.Match(s, &ctx);
return 0;
}
Русский военный корабль идёт ко дну!
Re: [MSVC8][BUG] AV in CAtlRegExp
От:
Кодт
Дата: 10.12.08 09:57
Оценка:
Здравствуйте, Alexander G, Вы писали:
Вот ведь не поленился!
А отдебажить?
Перекуём баги на фичи!
Re: [MSVC8][BUG] AV in CAtlRegExp
От:
Vain
google.ru
Дата: 10.12.08 10:23
Оценка:
Здравствуйте, Alexander G, Вы писали:
AG> // такая cтрока вполне валидна
AG> printf("An empty string '%s'", s);
Интересно, почему это не упало до?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: [MSVC8][BUG] AV in CAtlRegExp
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Alexander G, Вы писали:
К>Вот ведь не поленился!
Я не виноват, оно само пришло
В конструктор ATL::CStringA пришли ((char*)0, 0) , был выделен буфер по адресу 0x04048ff8. Меджер памяти стандартный, Windows XP.
https://winqual.microsoft.com рулит.
К>А отдебажить?
А лень. Я лучше CAtlRegExp выкину, столько альтернатив: regex, xpressive, CoCreate("VBScript.RegExp"), spirit,.. а ещё функция strnicmp, через которую всё самому можно сделать
Русский военный корабль идёт ко дну!
Re[3]: [MSVC8][BUG] AV in CAtlRegExp
От:
Vain
google.ru
Дата: 10.12.08 11:57
Оценка:
Здравствуйте, Alexander G, Вы писали:
AG>А лень. Я лучше CAtlRegExp выкину, столько альтернатив: regex, xpressive, CoCreate("VBScript.RegExp"), spirit,.. а ещё функция
AG>strnicmp, через которую всё самому можно сделать
Забыли ещё про
DEELX
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: [MSVC8][BUG] AV in CAtlRegExp
Русский военный корабль идёт ко дну!
Re[5]: [MSVC8][BUG] AV in CAtlRegExp
От:
Vain
google.ru
Дата: 10.12.08 13:31
Оценка:
Здравствуйте, Alexander G, Вы писали:
V>>Забыли ещё про DEELX
AG>Не знал.
Вот
ещё
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: [MSVC8][BUG] AV in CAtlRegExp
От:
Vain
google.ru
Дата: 10.12.08 13:56
Оценка:
Здравствуйте, Vain, Вы писали:
V>>>Забыли ещё про DEELX
AG>>Не знал.
V>Вот ещё
И
ещё
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: [MSVC8][BUG] AV in CAtlRegExp
Здравствуйте, Alexander G, Вы писали:
AG>Поэтому починять CAtlRegExp смысла нет. Тем более, может в 9ке или 10ке уже починили.
CAtlRegExp вместе с AtlServer из 9-ки выкинули вообще, AtlServer (и в нем CAtlRegExp) теперь живут отдельно на codeplex.com —
http://www.codeplex.com/AtlServer/Thread/View.aspx?ThreadId=27699
з.ы. в исходниках CAtlRegExp кстати ни строчки не поменялось
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить