pcre, bifs, drivers and ports

Robert Virding <>
Thu Aug 3 13:11:57 CEST 2006


Mats Cronqvist wrote:
> Luke Gorrie wrote:
>>   2> regexp:match("foo", "f**").
>>
>>   Crash dump was written to: erl_crash.dump
>>   eheap_alloc: Cannot allocate 1781763260 bytes of memory (of type 
>> "heap").
>>   Aborted
>>
>> .. death while trying to find the longest match with zero-or-more 
>> nothings.
>>
>> I've often wondered if there's a simple fix for this that doesn't take
>> away the cute simplicity of the regexp matcher.
> 
>   pcre deals with that like this;
> 
> 1> re:grep("foo",["f**"]).
> [{error,{"nothing to repeat",2}}]

While the handling of "f**" in regexp is definitely a bug, which I 
suppose I should fix, it is definitely a legal regular expression. So 
that pcre will not even allow the regular expression is also a bug, the 
question is if it is the parsing of the expression or where?

If you are as "cautious" as people working with cryptography you would 
start wondering if this is sign of a deeper malaise. :-)

As the great Cato said: I still feel that calling the function grep is 
misleading.

Could someone send a real problem to experiment on? Especially one which 
the current regexp module is definitely too slow on.

Robert




More information about the erlang-questions mailing list