ID:               33468
 Comment by:       bugs dot php dot net at chsc dot dk
 Reported By:      mjsherman at chartermi dot net
 Status:           Assigned
 Bug Type:         PCRE related
 Operating System: *
 PHP Version:      5CVS, 4CVS (2005-08-09)
 Assigned To:      andrei
 New Comment:

An even simpler testcase:

$data = str_repeat('a', 9999);
preg_match('/(?:[a])*/', $data, $reg);

Notice that the parenthesis is non-capturing, i.e. we don't even put a
lot of elements in the $reg array.


Previous Comments:
------------------------------------------------------------------------

[2005-08-09 10:36:28] [EMAIL PROTECTED]

Happens also with the new PCRE 6.2 lib which was bundled in PHP CVS
today.

------------------------------------------------------------------------

[2005-06-24 19:30:06] [EMAIL PROTECTED]

Andrei, could you check it plz.
As far as I understand, this is something not related to PHP, but just
another PCRE limitation.

------------------------------------------------------------------------

[2005-06-24 19:21:22] mjsherman at chartermi dot net

Just tested with 5.1.0beta2
Same problem.

------------------------------------------------------------------------

[2005-06-24 18:28:01] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip



------------------------------------------------------------------------

[2005-06-24 18:24:34] mjsherman at chartermi dot net

Description:
------------
preg_match, if passed a long subject string, fails unexpectedly.

I have read through the PCRE limitations, and can't see that this is
one of them.  I have tried increasing memory limit (to increase the
stack) with the same results.

Cutoff and examples are below:

Reproduce code:
---------------
$subject = str_repeat('a',100);
$subject .= str_repeat('b', 4370);
$subject .= str_repeat('a', 100);
if (preg_match('/(.*).*?\1/',$subject)) {
  echo "OK\n";
}

Expected result:
----------------
"OK" to be printed after matching 100 "a"s.
If 4370 is changed to 4369, then "OK" is printed.

Actual result:
--------------
With 4370 'b's, nothing is printed (failed preg_match)
With 4369 'b's, "OK" is printed (worked).


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=33468&edit=1

Reply via email to