mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 07:56:17 +01:00
regex: Remove obsolete patches
Upstream PCRE has removed the relocations that these patches were fixing; the patches are obsolete.
This commit is contained in:
parent
a40523b7f2
commit
3225b24cb5
@ -1,57 +0,0 @@
|
|||||||
#! /usr/bin/env python
|
|
||||||
|
|
||||||
# Reduce the number of relocations using a single string for the
|
|
||||||
# keys in the _pcre_utt table.
|
|
||||||
|
|
||||||
import re
|
|
||||||
|
|
||||||
fin = open('pcre_tables.c')
|
|
||||||
data = fin.read()
|
|
||||||
fin.close()
|
|
||||||
|
|
||||||
mo = re.search(r'const ucp_type_table _pcre_utt\[] = {', data)
|
|
||||||
assert mo, '_pcre_utt not found'
|
|
||||||
before = data[:mo.start()]
|
|
||||||
table_decl = data[mo.start():mo.end()]
|
|
||||||
table_start = mo.end()
|
|
||||||
|
|
||||||
mo = re.compile('};').search(data, table_start)
|
|
||||||
assert mo, 'end of _pcre_utt not found'
|
|
||||||
after = data[mo.end():]
|
|
||||||
table_end = mo.start()
|
|
||||||
|
|
||||||
table = data[table_start:table_end].strip()
|
|
||||||
|
|
||||||
rs = '\s*\{\s*"(?P<name>[^"]*)",\s*(?P<type>PT_[A-Z]*),\s*(?P<value>(?:0|ucp_[A-Za-z_]*))\s*},?\s*$'
|
|
||||||
r = re.compile(rs)
|
|
||||||
|
|
||||||
lines = []
|
|
||||||
names = []
|
|
||||||
pos = 0
|
|
||||||
for line in table.split('\n'):
|
|
||||||
mo = r.match(line)
|
|
||||||
assert mo, 'line not recognized'
|
|
||||||
name, type, value = mo.groups()
|
|
||||||
lines.append(' { %d, %s, %s }' % (pos, type, value))
|
|
||||||
names.append(name)
|
|
||||||
# +1 for the '\0'
|
|
||||||
pos += len(name) + 1
|
|
||||||
|
|
||||||
table = ',\n'.join(lines)
|
|
||||||
|
|
||||||
names = [' "%s\\0"' % n for n in names]
|
|
||||||
names_string = ' \n'.join(names) + ';'
|
|
||||||
|
|
||||||
data = before + \
|
|
||||||
'const char _pcre_ucp_names[] =\n' + \
|
|
||||||
names_string + \
|
|
||||||
'\n\n' + \
|
|
||||||
table_decl + \
|
|
||||||
'\n' + \
|
|
||||||
table + \
|
|
||||||
'\n};' + \
|
|
||||||
after
|
|
||||||
|
|
||||||
fout = open('pcre_tables.c', 'w')
|
|
||||||
fout.write(data)
|
|
||||||
fout.close()
|
|
@ -1,269 +0,0 @@
|
|||||||
--- pcre_compile.c 2006-10-10 12:00:00.000000000 +0200
|
|
||||||
+++ pcre_compile.c 2006-10-10 12:00:00.000000000 +0200
|
|
||||||
@@ -129,10 +129,21 @@
|
|
||||||
terminated by a zero length entry. The first three must be alpha, lower, upper,
|
|
||||||
as this is assumed for handling case independence. */
|
|
||||||
|
|
||||||
-static const char *const posix_names[] = {
|
|
||||||
- "alpha", "lower", "upper",
|
|
||||||
- "alnum", "ascii", "blank", "cntrl", "digit", "graph",
|
|
||||||
- "print", "punct", "space", "word", "xdigit" };
|
|
||||||
+static const char posix_names[] =
|
|
||||||
+ "alpha\0"
|
|
||||||
+ "lower\0"
|
|
||||||
+ "upper\0"
|
|
||||||
+ "alnum\0"
|
|
||||||
+ "ascii\0"
|
|
||||||
+ "blank\0"
|
|
||||||
+ "cntrl\0"
|
|
||||||
+ "digit\0"
|
|
||||||
+ "graph\0"
|
|
||||||
+ "print\0"
|
|
||||||
+ "punct\0"
|
|
||||||
+ "space\0"
|
|
||||||
+ "word\0"
|
|
||||||
+ "xdigit";
|
|
||||||
|
|
||||||
static const uschar posix_name_lengths[] = {
|
|
||||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 };
|
|
||||||
@@ -173,76 +184,138 @@
|
|
||||||
they are documented. Always add a new error instead. Messages marked DEAD below
|
|
||||||
are no longer used. */
|
|
||||||
|
|
||||||
-static const char *error_texts[] = {
|
|
||||||
- "no error",
|
|
||||||
- "\\ at end of pattern",
|
|
||||||
- "\\c at end of pattern",
|
|
||||||
- "unrecognized character follows \\",
|
|
||||||
- "numbers out of order in {} quantifier",
|
|
||||||
+#define DEAD(s) "\0"
|
|
||||||
+
|
|
||||||
+static const char error_texts[] =
|
|
||||||
+ "no error\0"
|
|
||||||
+ "\\ at end of pattern\0"
|
|
||||||
+ "\\c at end of pattern\0"
|
|
||||||
+ "unrecognized character follows \\\0"
|
|
||||||
+ "numbers out of order in {} quantifier\0"
|
|
||||||
/* 5 */
|
|
||||||
- "number too big in {} quantifier",
|
|
||||||
- "missing terminating ] for character class",
|
|
||||||
- "invalid escape sequence in character class",
|
|
||||||
- "range out of order in character class",
|
|
||||||
- "nothing to repeat",
|
|
||||||
+ "number too big in {} quantifier\0"
|
|
||||||
+ "missing terminating ] for character class\0"
|
|
||||||
+ "invalid escape sequence in character class\0"
|
|
||||||
+ "range out of order in character class\0"
|
|
||||||
+ "nothing to repeat\0"
|
|
||||||
/* 10 */
|
|
||||||
- "operand of unlimited repeat could match the empty string", /** DEAD **/
|
|
||||||
- "internal error: unexpected repeat",
|
|
||||||
- "unrecognized character after (?",
|
|
||||||
- "POSIX named classes are supported only within a class",
|
|
||||||
- "missing )",
|
|
||||||
+ DEAD("operand of unlimited repeat could match the empty string")
|
|
||||||
+ "internal error: unexpected repeat\0"
|
|
||||||
+ "unrecognized character after (?\0"
|
|
||||||
+ "POSIX named classes are supported only within a class\0"
|
|
||||||
+ "missing )\0"
|
|
||||||
/* 15 */
|
|
||||||
- "reference to non-existent subpattern",
|
|
||||||
- "erroffset passed as NULL",
|
|
||||||
- "unknown option bit(s) set",
|
|
||||||
- "missing ) after comment",
|
|
||||||
- "parentheses nested too deeply", /** DEAD **/
|
|
||||||
+ "reference to non-existent subpattern\0"
|
|
||||||
+ "erroffset passed as NULL\0"
|
|
||||||
+ "unknown option bit(s) set\0"
|
|
||||||
+ "missing ) after comment\0"
|
|
||||||
+ DEAD("parentheses nested too deeply")
|
|
||||||
/* 20 */
|
|
||||||
- "regular expression too large",
|
|
||||||
- "failed to get memory",
|
|
||||||
- "unmatched parentheses",
|
|
||||||
- "internal error: code overflow",
|
|
||||||
- "unrecognized character after (?<",
|
|
||||||
+ "regular expression too large\0"
|
|
||||||
+ "failed to get memory\0"
|
|
||||||
+ "unmatched parentheses\0"
|
|
||||||
+ "internal error: code overflow\0"
|
|
||||||
+ "unrecognized character after (?<\0"
|
|
||||||
/* 25 */
|
|
||||||
- "lookbehind assertion is not fixed length",
|
|
||||||
- "malformed number or name after (?(",
|
|
||||||
- "conditional group contains more than two branches",
|
|
||||||
- "assertion expected after (?(",
|
|
||||||
- "(?R or (?digits must be followed by )",
|
|
||||||
+ "lookbehind assertion is not fixed length\0"
|
|
||||||
+ "malformed number or name after (?(\0"
|
|
||||||
+ "conditional group contains more than two branches\0"
|
|
||||||
+ "assertion expected after (?(\0"
|
|
||||||
+ "(?R or (?digits must be followed by )\0"
|
|
||||||
/* 30 */
|
|
||||||
- "unknown POSIX class name",
|
|
||||||
- "POSIX collating elements are not supported",
|
|
||||||
- "this version of PCRE is not compiled with PCRE_UTF8 support",
|
|
||||||
- "spare error", /** DEAD **/
|
|
||||||
- "character value in \\x{...} sequence is too large",
|
|
||||||
+ "unknown POSIX class name\0"
|
|
||||||
+ "POSIX collating elements are not supported\0"
|
|
||||||
+ "this version of PCRE is not compiled with PCRE_UTF8 support\0"
|
|
||||||
+ DEAD("spare error")
|
|
||||||
+ "character value in \\x{...} sequence is too large\0"
|
|
||||||
/* 35 */
|
|
||||||
- "invalid condition (?(0)",
|
|
||||||
- "\\C not allowed in lookbehind assertion",
|
|
||||||
- "PCRE does not support \\L, \\l, \\N, \\U, or \\u",
|
|
||||||
- "number after (?C is > 255",
|
|
||||||
- "closing ) for (?C expected",
|
|
||||||
+ "invalid condition (?(0)\0"
|
|
||||||
+ "\\C not allowed in lookbehind assertion\0"
|
|
||||||
+ "PCRE does not support \\L, \\l, \\N, \\U, or \\u\0"
|
|
||||||
+ "number after (?C is > 255\0"
|
|
||||||
+ "closing ) for (?C expected\0"
|
|
||||||
/* 40 */
|
|
||||||
- "recursive call could loop indefinitely",
|
|
||||||
- "unrecognized character after (?P",
|
|
||||||
- "syntax error in subpattern name (missing terminator)",
|
|
||||||
- "two named subpatterns have the same name",
|
|
||||||
- "invalid UTF-8 string",
|
|
||||||
+ "recursive call could loop indefinitely\0"
|
|
||||||
+ "unrecognized character after (?P\0"
|
|
||||||
+ "syntax error in subpattern name (missing terminator)\0"
|
|
||||||
+ "two named subpatterns have the same name\0"
|
|
||||||
+ "invalid UTF-8 string\0"
|
|
||||||
/* 45 */
|
|
||||||
- "support for \\P, \\p, and \\X has not been compiled",
|
|
||||||
- "malformed \\P or \\p sequence",
|
|
||||||
- "unknown property name after \\P or \\p",
|
|
||||||
- "subpattern name is too long (maximum " XSTRING(MAX_NAME_SIZE) " characters)",
|
|
||||||
- "too many named subpatterns (maximum " XSTRING(MAX_NAME_COUNT) ")",
|
|
||||||
+ "support for \\P, \\p, and \\X has not been compiled\0"
|
|
||||||
+ "malformed \\P or \\p sequence\0"
|
|
||||||
+ "unknown property name after \\P or \\p\0"
|
|
||||||
+ "subpattern name is too long (maximum " XSTRING(MAX_NAME_SIZE) " characters)\0"
|
|
||||||
+ "too many named subpatterns (maximum " XSTRING(MAX_NAME_COUNT) ")\0"
|
|
||||||
/* 50 */
|
|
||||||
- "repeated subpattern is too long",
|
|
||||||
- "octal value is greater than \\377 (not in UTF-8 mode)",
|
|
||||||
- "internal error: overran compiling workspace",
|
|
||||||
- "internal error: previously-checked referenced subpattern not found",
|
|
||||||
- "DEFINE group contains more than one branch",
|
|
||||||
+ "repeated subpattern is too long\0"
|
|
||||||
+ "octal value is greater than \\377 (not in UTF-8 mode)\0"
|
|
||||||
+ "internal error: overran compiling workspace\0"
|
|
||||||
+ "internal error: previously-checked referenced subpattern not found\0"
|
|
||||||
+ "DEFINE group contains more than one branch\0"
|
|
||||||
/* 55 */
|
|
||||||
- "repeating a DEFINE group is not allowed",
|
|
||||||
- "inconsistent NEWLINE options",
|
|
||||||
- "\\g is not followed by an (optionally braced) non-zero number"
|
|
||||||
+ "repeating a DEFINE group is not allowed\0"
|
|
||||||
+ "inconsistent NEWLINE options\0"
|
|
||||||
+ "\\g is not followed by an (optionally braced) non-zero number";
|
|
||||||
+
|
|
||||||
+static const int error_texts_offsets[] = {
|
|
||||||
+ 0,
|
|
||||||
+ 9,
|
|
||||||
+ 29,
|
|
||||||
+ 50,
|
|
||||||
+ 83,
|
|
||||||
+ 121,
|
|
||||||
+ 153,
|
|
||||||
+ 195,
|
|
||||||
+ 238,
|
|
||||||
+ 276,
|
|
||||||
+ 294,
|
|
||||||
+ 295,
|
|
||||||
+ 329,
|
|
||||||
+ 361,
|
|
||||||
+ 415,
|
|
||||||
+ 425,
|
|
||||||
+ 462,
|
|
||||||
+ 487,
|
|
||||||
+ 513,
|
|
||||||
+ 537,
|
|
||||||
+ 538,
|
|
||||||
+ 567,
|
|
||||||
+ 588,
|
|
||||||
+ 610,
|
|
||||||
+ 640,
|
|
||||||
+ 673,
|
|
||||||
+ 714,
|
|
||||||
+ 749,
|
|
||||||
+ 799,
|
|
||||||
+ 828,
|
|
||||||
+ 866,
|
|
||||||
+ 891,
|
|
||||||
+ 934,
|
|
||||||
+ 994,
|
|
||||||
+ 995,
|
|
||||||
+ 1044,
|
|
||||||
+ 1068,
|
|
||||||
+ 1107,
|
|
||||||
+ 1151,
|
|
||||||
+ 1177,
|
|
||||||
+ 1204,
|
|
||||||
+ 1243,
|
|
||||||
+ 1276,
|
|
||||||
+ 1329,
|
|
||||||
+ 1370,
|
|
||||||
+ 1391,
|
|
||||||
+ 1440,
|
|
||||||
+ 1468,
|
|
||||||
+ 1505,
|
|
||||||
+ 1557,
|
|
||||||
+ 1600,
|
|
||||||
+ 1632,
|
|
||||||
+ 1685,
|
|
||||||
+ 1729,
|
|
||||||
+ 1796,
|
|
||||||
+ 1839,
|
|
||||||
+ 1879,
|
|
||||||
+ 1908
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1453,14 +1526,16 @@
|
|
||||||
static int
|
|
||||||
check_posix_name(const uschar *ptr, int len)
|
|
||||||
{
|
|
||||||
-register int yield = 0;
|
|
||||||
-while (posix_name_lengths[yield] != 0)
|
|
||||||
- {
|
|
||||||
- if (len == posix_name_lengths[yield] &&
|
|
||||||
- strncmp((const char *)ptr, posix_names[yield], len) == 0) return yield;
|
|
||||||
- yield++;
|
|
||||||
- }
|
|
||||||
-return -1;
|
|
||||||
+ int offset = 0;
|
|
||||||
+ int yield = 0;
|
|
||||||
+ while (posix_name_lengths[yield] != 0)
|
|
||||||
+ {
|
|
||||||
+ if (len == posix_name_lengths[yield] &&
|
|
||||||
+ strcmp((const char *)ptr, posix_names + offset) == 0) return yield;
|
|
||||||
+ offset += posix_name_lengths[yield] + 1;
|
|
||||||
+ yield++;
|
|
||||||
+ }
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -5200,7 +5275,7 @@
|
|
||||||
#ifdef SUPPORT_UTF8
|
|
||||||
PCRE_UTF8_ERROR_RETURN:
|
|
||||||
#endif
|
|
||||||
- *errorptr = error_texts[errorcode];
|
|
||||||
+ *errorptr = error_texts + error_texts_offsets[errorcode];
|
|
||||||
if (errorcodeptr != NULL) *errorcodeptr = errorcode;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
@@ -5297,7 +5372,7 @@
|
|
||||||
if (code - codestart > length)
|
|
||||||
{
|
|
||||||
(pcre_free)(re);
|
|
||||||
- *errorptr = error_texts[ERR23];
|
|
||||||
+ *errorptr = error_texts + error_texts_offsets[ERR23];
|
|
||||||
*erroroffset = ptr - (uschar *)pattern;
|
|
||||||
if (errorcodeptr != NULL) *errorcodeptr = ERR23;
|
|
||||||
return NULL;
|
|
Loading…
Reference in New Issue
Block a user