pcre_assign_jit_stack |
Assign stack for JIT matching |
@@ -162,7 +162,7 @@ functions.
pcre_maketables |
Build character tables in current locale |
-
+
pcre_pattern_to_host_byte_order |
Convert compiled pattern to host byte order if necessary |
diff --git a/doc/html/pcre.html b/doc/html/pcre.html
index 0db75e4..31391f5 100644
--- a/doc/html/pcre.html
+++ b/doc/html/pcre.html
@@ -22,13 +22,12 @@ man page, in case the conversion went wrong.
PLEASE TAKE NOTE
-This document relates to PCRE releases that use the original API,
-with library names libpcre, libpcre16, and libpcre32. January 2015 saw the
-first release of a new API, known as PCRE2, with release numbers starting at
-10.00 and library names libpcre2-8, libpcre2-16, and libpcre2-32. The old
-libraries (now called PCRE1) are still being maintained for bug fixes, but
-there will be no new development. New projects are advised to use the new PCRE2
-libraries.
+This document relates to PCRE releases that use the original API, with library
+names libpcre, libpcre16, and libpcre32. January 2015 saw the first release of
+a new API, known as PCRE2, with release numbers starting at 10.00 and library
+names libpcre2-8, libpcre2-16, and libpcre2-32. The old libraries (now called
+PCRE1) are now at end of life, and 8.45 is the final release. New projects are
+advised to use the new PCRE2 libraries.
INTRODUCTION
@@ -215,9 +214,9 @@ two digits 10, at the domain cam.ac.uk.
REVISION
-Last updated: 10 February 2015
+Last updated: 14 June 2021
-Copyright © 1997-2015 University of Cambridge.
+Copyright © 1997-2021 University of Cambridge.
Return to the PCRE index page.
diff --git a/doc/pcre.3 b/doc/pcre.3
index 716d580..afd0830 100644
--- a/doc/pcre.3
+++ b/doc/pcre.3
@@ -1,16 +1,15 @@
-.TH PCRE 3 "10 February 2015" "PCRE 8.37"
+.TH PCRE 3 "14 June 2021" "PCRE 8.45"
.SH NAME
PCRE - Perl-compatible regular expressions (original API)
.SH "PLEASE TAKE NOTE"
.rs
.sp
-This document relates to PCRE releases that use the original API,
-with library names libpcre, libpcre16, and libpcre32. January 2015 saw the
-first release of a new API, known as PCRE2, with release numbers starting at
-10.00 and library names libpcre2-8, libpcre2-16, and libpcre2-32. The old
-libraries (now called PCRE1) are still being maintained for bug fixes, but
-there will be no new development. New projects are advised to use the new PCRE2
-libraries.
+This document relates to PCRE releases that use the original API, with library
+names libpcre, libpcre16, and libpcre32. January 2015 saw the first release of
+a new API, known as PCRE2, with release numbers starting at 10.00 and library
+names libpcre2-8, libpcre2-16, and libpcre2-32. The old libraries (now called
+PCRE1) are now at end of life, and 8.45 is the final release. New projects are
+advised to use the new PCRE2 libraries.
.
.
.SH INTRODUCTION
@@ -225,6 +224,6 @@ two digits 10, at the domain cam.ac.uk.
.rs
.sp
.nf
-Last updated: 10 February 2015
-Copyright (c) 1997-2015 University of Cambridge.
+Last updated: 14 June 2021
+Copyright (c) 1997-2021 University of Cambridge.
.fi
diff --git a/doc/pcre.txt b/doc/pcre.txt
index 8ffc902..393a700 100644
--- a/doc/pcre.txt
+++ b/doc/pcre.txt
@@ -21,9 +21,9 @@ PLEASE TAKE NOTE
library names libpcre, libpcre16, and libpcre32. January 2015 saw the
first release of a new API, known as PCRE2, with release numbers start-
ing at 10.00 and library names libpcre2-8, libpcre2-16, and
- libpcre2-32. The old libraries (now called PCRE1) are still being main-
- tained for bug fixes, but there will be no new development. New
- projects are advised to use the new PCRE2 libraries.
+ libpcre2-32. The old libraries (now called PCRE1) are now at end of
+ life, and 8.45 is the final release. New projects are advised to use
+ the new PCRE2 libraries.
INTRODUCTION
@@ -190,11 +190,11 @@ AUTHOR
REVISION
- Last updated: 10 February 2015
- Copyright (c) 1997-2015 University of Cambridge.
+ Last updated: 14 June 2021
+ Copyright (c) 1997-2021 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRE(3) Library Functions Manual PCRE(3)
@@ -525,8 +525,8 @@ REVISION
Last updated: 12 May 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRE(3) Library Functions Manual PCRE(3)
@@ -853,8 +853,8 @@ REVISION
Last updated: 12 May 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREBUILD(3) Library Functions Manual PCREBUILD(3)
@@ -1356,8 +1356,8 @@ REVISION
Last updated: 12 May 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREMATCHING(3) Library Functions Manual PCREMATCHING(3)
@@ -1574,8 +1574,8 @@ REVISION
Last updated: 12 November 2013
Copyright (c) 1997-2012 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREAPI(3) Library Functions Manual PCREAPI(3)
@@ -4275,8 +4275,8 @@ REVISION
Last updated: 18 December 2015
Copyright (c) 1997-2015 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRECALLOUT(3) Library Functions Manual PCRECALLOUT(3)
@@ -4525,8 +4525,8 @@ REVISION
Last updated: 12 November 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRECOMPAT(3) Library Functions Manual PCRECOMPAT(3)
@@ -4720,8 +4720,8 @@ REVISION
Last updated: 10 November 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREPATTERN(3) Library Functions Manual PCREPATTERN(3)
@@ -7670,8 +7670,8 @@ REVISION
Last updated: 23 October 2016
Copyright (c) 1997-2016 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRESYNTAX(3) Library Functions Manual PCRESYNTAX(3)
@@ -8076,8 +8076,8 @@ REVISION
Last updated: 08 January 2014
Copyright (c) 1997-2014 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREUNICODE(3) Library Functions Manual PCREUNICODE(3)
@@ -8295,8 +8295,8 @@ REVISION
Last updated: 27 February 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREJIT(3) Library Functions Manual PCREJIT(3)
@@ -8750,8 +8750,8 @@ REVISION
Last updated: 05 July 2017
Copyright (c) 1997-2017 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREPARTIAL(3) Library Functions Manual PCREPARTIAL(3)
@@ -9235,8 +9235,8 @@ REVISION
Last updated: 02 July 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREPRECOMPILE(3) Library Functions Manual PCREPRECOMPILE(3)
@@ -9374,8 +9374,8 @@ REVISION
Last updated: 12 November 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREPERFORM(3) Library Functions Manual PCREPERFORM(3)
@@ -9544,8 +9544,8 @@ REVISION
Last updated: 25 August 2012
Copyright (c) 1997-2012 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCREPOSIX(3) Library Functions Manual PCREPOSIX(3)
@@ -9808,8 +9808,8 @@ REVISION
Last updated: 09 January 2012
Copyright (c) 1997-2012 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRECPP(3) Library Functions Manual PCRECPP(3)
@@ -10151,8 +10151,8 @@ REVISION
Last updated: 08 January 2012
------------------------------------------------------------------------------
-
-
+
+
PCRESAMPLE(3) Library Functions Manual PCRESAMPLE(3)
@@ -10305,8 +10305,8 @@ REVISION
Last updated: 05 November 2013
Copyright (c) 1997-2013 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
PCRESTACK(3) Library Functions Manual PCRESTACK(3)
@@ -10491,5 +10491,5 @@ REVISION
Last updated: 24 June 2012
Copyright (c) 1997-2012 University of Cambridge.
------------------------------------------------------------------------------
-
-
+
+
diff --git a/doc/pcreapi.3 b/doc/pcreapi.3
index d792178..685672a 100644
--- a/doc/pcreapi.3
+++ b/doc/pcreapi.3
@@ -1699,7 +1699,7 @@ very long time, and so the \fImatch_limit\fP value is also used in this case
.P
The default value for the limit can be set when PCRE is built; the default
default is 10 million, which handles all but the most extreme cases. You can
-override the default by suppling \fBpcre_exec()\fP with a \fBpcre_extra\fP
+override the default by supplying \fBpcre_exec()\fP with a \fBpcre_extra\fP
block in which \fImatch_limit\fP is set, and PCRE_EXTRA_MATCH_LIMIT is set in
the \fIflags\fP field. If the limit is exceeded, \fBpcre_exec()\fP returns
PCRE_ERROR_MATCHLIMIT.
@@ -1726,7 +1726,7 @@ and is ignored, when matching is done using JIT compiled code.
.P
The default value for \fImatch_limit_recursion\fP can be set when PCRE is
built; the default default is the same value as the default for
-\fImatch_limit\fP. You can override the default by suppling \fBpcre_exec()\fP
+\fImatch_limit\fP. You can override the default by supplying \fBpcre_exec()\fP
with a \fBpcre_extra\fP block in which \fImatch_limit_recursion\fP is set, and
PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the \fIflags\fP field. If the limit
is exceeded, \fBpcre_exec()\fP returns PCRE_ERROR_RECURSIONLIMIT.
@@ -2044,10 +2044,10 @@ lookbehind. For example, consider the pattern
.sp
which finds occurrences of "iss" in the middle of words. (\eB matches only if
the current position in the subject is not a word boundary.) When applied to
-the string "Mississipi" the first call to \fBpcre_exec()\fP finds the first
+the string "Mississippi" the first call to \fBpcre_exec()\fP finds the first
occurrence. If \fBpcre_exec()\fP is called again with just the remainder of the
-subject, namely "issipi", it does not match, because \eB is always false at the
-start of the subject, which is deemed to be a word boundary. However, if
+subject, namely "issippi", it does not match, because \eB is always false at
+the start of the subject, which is deemed to be a word boundary. However, if
\fBpcre_exec()\fP is passed the entire string again, but with \fIstartoffset\fP
set to 4, it finds the second occurrence of "iss" because it is able to look
behind the starting point to discover that it is preceded by a letter.
diff --git a/doc/pcrejit.3 b/doc/pcrejit.3
index 3b785f0..fe42db5 100644
--- a/doc/pcrejit.3
+++ b/doc/pcrejit.3
@@ -285,7 +285,7 @@ recommended.
This is a suggestion for how a multithreaded program that needs to set up
non-default JIT stacks might operate:
.sp
- During thread initalization
+ During thread initialization
thread_local_var = pcre_jit_stack_alloc(...)
.sp
During thread exit
diff --git a/doc/pcrepattern.3 b/doc/pcrepattern.3
index 97df217..2f501a6 100644
--- a/doc/pcrepattern.3
+++ b/doc/pcrepattern.3
@@ -656,7 +656,7 @@ recognized.
.P
It is possible to restrict \eR to match only CR, LF, or CRLF (instead of the
complete set of Unicode line endings) by setting the option PCRE_BSR_ANYCRLF
-either at compile time or when the pattern is matched. (BSR is an abbrevation
+either at compile time or when the pattern is matched. (BSR is an abbreviation
for "backslash R".) This can be made the default when PCRE is built; if this is
the case, the other behaviour can be requested via the PCRE_BSR_UNICODE option.
It is also possible to specify these settings by starting a pattern string with
@@ -968,7 +968,7 @@ additional characters according to the following rules for ending a cluster:
3. Do not break Hangul (a Korean script) syllable sequences. Hangul characters
are of five types: L, V, T, LV, and LVT. An L character may be followed by an
L, V, LV, or LVT character; an LV or V character may be followed by a V or T
-character; an LVT or T character may be follwed only by a T character.
+character; an LVT or T character may be followed only by a T character.
.P
4. Do not end before extending characters or spacing marks. Characters with
the "mark" property always have the "extend" grapheme breaking property.
@@ -3115,7 +3115,7 @@ successful match. Consider:
.sp
If the subject is "aaaac...", after the first match attempt fails (starting at
the first character in the string), the starting point skips on to start the
-next attempt at "c". Note that a possessive quantifer does not have the same
+next attempt at "c". Note that a possessive quantifier does not have the same
effect as this example; although it would suppress backtracking during the
first match attempt, the second attempt would start at the second character
instead of skipping on to "c".
diff --git a/doc/pcresyntax.3 b/doc/pcresyntax.3
index 0850369..b77a866 100644
--- a/doc/pcresyntax.3
+++ b/doc/pcresyntax.3
@@ -123,7 +123,7 @@ is changed to use Unicode properties and they match many more characters.
Xan Alphanumeric: union of properties L and N
Xps POSIX space: property Z or tab, NL, VT, FF, CR
Xsp Perl space: property Z or tab, NL, VT, FF, CR
- Xuc Univerally-named character: one that can be
+ Xuc Universally-named character: one that can be
represented by a Universal Character Name
Xwd Perl word: property Xan or underscore
.sp
diff --git a/pcre_compile.c b/pcre_compile.c
index 3be0fbf..03db188 100644
--- a/pcre_compile.c
+++ b/pcre_compile.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2020 University of Cambridge
+ Copyright (c) 1997-2021 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -9099,6 +9099,8 @@ pcre_uchar cworkspace[COMPILE_WORK_SIZE];
similar way to cworkspace, it can be expanded using malloc() if necessary. */
named_group named_groups[NAMED_GROUP_LIST_SIZE];
+cd->named_groups = named_groups;
+cd->named_group_list_size = NAMED_GROUP_LIST_SIZE;
/* Set this early so that early errors get offset 0. */
@@ -9372,8 +9374,6 @@ cd->hwm = cworkspace;
cd->iscondassert = FALSE;
cd->start_workspace = cworkspace;
cd->workspace_size = COMPILE_WORK_SIZE;
-cd->named_groups = named_groups;
-cd->named_group_list_size = NAMED_GROUP_LIST_SIZE;
cd->start_pattern = (const pcre_uchar *)pattern;
cd->end_pattern = (const pcre_uchar *)(pattern + STRLEN_UC((const pcre_uchar *)pattern));
cd->req_varyopt = 0;
@@ -9484,6 +9484,7 @@ if (cd->names_found > 0)
add_name(cd, ng->name, ng->length, ng->number);
if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE)
(PUBL(free))((void *)cd->named_groups);
+ cd->named_group_list_size = 0; /* So we don't free it twice */
}
/* Set up a starting, non-extracting bracket, then compile the expression. On
@@ -9634,6 +9635,8 @@ if (errorcode != 0)
{
(PUBL(free))(re);
PCRE_EARLY_ERROR_RETURN:
+ if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE)
+ (PUBL(free))((void *)cd->named_groups);
*erroroffset = (int)(ptr - (const pcre_uchar *)pattern);
PCRE_EARLY_ERROR_RETURN2:
*errorptr = find_error_text(errorcode);
diff --git a/pcre_exec.c b/pcre_exec.c
index 3fd58cb..5b96954 100644
--- a/pcre_exec.c
+++ b/pcre_exec.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2018 University of Cambridge
+ Copyright (c) 1997-2021 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -758,7 +758,7 @@ for (;;)
md->mark = NULL; /* In case previously set by assertion */
RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode] + ecode[1], offset_top, md,
eptrb, RM55);
- if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) &&
+ if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT || rrc == MATCH_KETRPOS) &&
md->mark == NULL) md->mark = ecode + 2;
/* A return of MATCH_SKIP_ARG means that matching failed at SKIP with an
diff --git a/pcredemo.c b/pcredemo.c
index 946aba4..1ca77f1 100644
--- a/pcredemo.c
+++ b/pcredemo.c
@@ -144,7 +144,7 @@ if (rc < 0)
return 1;
}
-/* Match succeded */
+/* Match succeeded */
printf("\nMatch succeeded at offset %d\n", ovector[0]);
@@ -362,7 +362,7 @@ for (;;)
return 1;
}
- /* Match succeded */
+ /* Match succeeded */
printf("\nMatch succeeded again at offset %d\n", ovector[0]);
diff --git a/testdata/testinput1 b/testdata/testinput1
index 02e4f48..54bc79c 100644
--- a/testdata/testinput1
+++ b/testdata/testinput1
@@ -5757,4 +5757,7 @@ AbcdCBefgBhiBqz
/(?&word)* \. (? \w+ )/xi
pokus.hokus
+/(?:A(*:X))*+/K
+ A
+
/-- End of testinput1 --/
diff --git a/testdata/testoutput1 b/testdata/testoutput1
index e6147e6..212dafa 100644
--- a/testdata/testoutput1
+++ b/testdata/testoutput1
@@ -9470,4 +9470,9 @@ No match
0: pokus.hokus
1: hokus
+/(?:A(*:X))*+/K
+ A
+ 0: A
+MK: X
+
/-- End of testinput1 --/
--
cgit v1.2.1