| 100 |
.rs |
.rs |
| 101 |
.sp |
.sp |
| 102 |
Internally, PCRE has a function called \fBmatch()\fP, which it calls repeatedly |
Internally, PCRE has a function called \fBmatch()\fP, which it calls repeatedly |
| 103 |
(possibly recursively) when matching a pattern. By controlling the maximum |
(possibly recursively) when matching a pattern with the \fBpcre_exec()\fP |
| 104 |
number of times this function may be called during a single matching operation, |
function. By controlling the maximum number of times this function may be |
| 105 |
a limit can be placed on the resources used by a single call to |
called during a single matching operation, a limit can be placed on the |
| 106 |
\fBpcre_exec()\fP. The limit can be changed at run time, as described in the |
resources used by a single call to \fBpcre_exec()\fP. The limit can be changed |
| 107 |
|
at run time, as described in the |
| 108 |
.\" HREF |
.\" HREF |
| 109 |
\fBpcreapi\fP |
\fBpcreapi\fP |
| 110 |
.\" |
.\" |
| 113 |
.sp |
.sp |
| 114 |
--with-match-limit=500000 |
--with-match-limit=500000 |
| 115 |
.sp |
.sp |
| 116 |
to the \fBconfigure\fP command. |
to the \fBconfigure\fP command. This setting has no effect on the |
| 117 |
|
\fBpcre_dfa_exec()\fP matching function. |
| 118 |
. |
. |
| 119 |
.SH "HANDLING VERY LARGE PATTERNS" |
.SH "HANDLING VERY LARGE PATTERNS" |
| 120 |
.rs |
.rs |
| 140 |
.SH "AVOIDING EXCESSIVE STACK USAGE" |
.SH "AVOIDING EXCESSIVE STACK USAGE" |
| 141 |
.rs |
.rs |
| 142 |
.sp |
.sp |
| 143 |
PCRE implements backtracking while matching by making recursive calls to an |
When matching with the \fBpcre_exec()\fP function, PCRE implements backtracking |
| 144 |
internal function called \fBmatch()\fP. In environments where the size of the |
by making recursive calls to an internal function called \fBmatch()\fP. In |
| 145 |
stack is limited, this can severely limit PCRE's operation. (The Unix |
environments where the size of the stack is limited, this can severely limit |
| 146 |
environment does not usually suffer from this problem.) An alternative approach |
PCRE's operation. (The Unix environment does not usually suffer from this |
| 147 |
that uses memory from the heap to remember data, instead of using recursive |
problem.) An alternative approach that uses memory from the heap to remember |
| 148 |
function calls, has been implemented to work round this problem. If you want to |
data, instead of using recursive function calls, has been implemented to work |
| 149 |
build a version of PCRE that works this way, add |
round this problem. If you want to build a version of PCRE that works this way, |
| 150 |
|
add |
| 151 |
.sp |
.sp |
| 152 |
--disable-stack-for-recursion |
--disable-stack-for-recursion |
| 153 |
.sp |
.sp |
| 158 |
always freed in reverse order. A calling program might be able to implement |
always freed in reverse order. A calling program might be able to implement |
| 159 |
optimized functions that perform better than the standard \fBmalloc()\fP and |
optimized functions that perform better than the standard \fBmalloc()\fP and |
| 160 |
\fBfree()\fP functions. PCRE runs noticeably more slowly when built in this |
\fBfree()\fP functions. PCRE runs noticeably more slowly when built in this |
| 161 |
way. |
way. This option affects only the \fBpcre_exec()\fP function; it is not |
| 162 |
|
relevant for the the \fBpcre_dfa_exec()\fP function. |
| 163 |
. |
. |
| 164 |
.SH "USING EBCDIC CODE" |
.SH "USING EBCDIC CODE" |
| 165 |
.rs |
.rs |
| 173 |
to the \fBconfigure\fP command. |
to the \fBconfigure\fP command. |
| 174 |
.P |
.P |
| 175 |
.in 0 |
.in 0 |
| 176 |
Last updated: 09 September 2004 |
Last updated: 28 February 2005 |
| 177 |
.br |
.br |
| 178 |
Copyright (c) 1997-2004 University of Cambridge. |
Copyright (c) 1997-2005 University of Cambridge. |