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. |