On Wed, Nov 12, 2003 at 11:32:49AM +0300, Stanislav Ievlev wrote: > On Tue, Nov 11, 2003 at 06:47:50PM +0300, Sergey Vlasov wrote: > > On Tue, Nov 11, 2003 at 08:36:26PM +0500, Andrey Rahmatullin wrote: > > Content-Description: signed data > > > В сообщении от 11 Ноябрь 2003 19:38 Sergey Vlasov написал(a): > > > > > > [...] > > > > Попробуйте запустить программу под valgrind - он умеет отлавливать > > > > подобные ошибки > > > [...] > > > > > > Ой блин... > > > > > > ==16664== Invalid write of size 4 > > > ==16664== at 0x403261F9: regcomp (in /lib/libc-2.2.6.so) > > > ==16664== by 0x806F536: reg_compile (regexp.c:33) > > > ==16664== by 0x804C4E4: global_general_insert (global.c:464) > > > ==16664== by 0x804ACE6: global_load (global.c:102) > > > ==16664== Address 0x412BE104 is 4 bytes after a block of size 12 alloc'd > > > ==16664== at 0x40026942: malloc (vg_replace_malloc.c:153) > > > ==16664== by 0x806610C: xmalloc (mem.c:35) > > > ==16664== by 0x806F51F: reg_compile (regexp.c:31) > > > ==16664== by 0x804C4E4: global_general_insert (global.c:464) > > > > > > И так кучу раз (похоже, что на каждый регэксп). > > > > Вот бардак... У этой дряни что, собственное левое определение regex_t > > (такая гадость иногда встречается)? > Если это намёк на pcre, то почему сразу дрянь. Имеет право. > Всё что связано с regex это weekalias (как просвятил меня Дима). У > pcre же есть очень удобный POSIX интерфейс с поддержкой расширений > perl. А уж если POSIX интерфейс, то и есть regex_t. Было бы > удивительно если бы она (pcre) использовала glibc'шный. Ну здесь-то явно используется regcomp из glibc. Т.е. где-то перепутались заголовки и библиотеки. Против самой pcre я не выступаю. А вот pcreposix - это гадость, т.к. вполне может сломать работу POSIX regexp в других библиотеках (не glibc). Следовало бы делать эту эмуляцию не прямым переопределением regcomp/regexec/..., а через #define regcomp __pcre_regcomp в - тогда это бы влияло только на файлы, которые были скомпилированы с #include .