diff options
author | ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069> | 2015-08-09 16:29:35 +0000 |
---|---|---|
committer | ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069> | 2015-08-09 16:29:35 +0000 |
commit | c5489cdada19f23cb3c25c9a4771447a84dbb556 (patch) | |
tree | f8bda69987e9554194faaa8992daac40e98292b1 /src/pcre2_intmodedep.h | |
parent | 1e0c21fe7dc6124a8f574c44c0916abc1adc3ddc (diff) | |
download | pcre2-c5489cdada19f23cb3c25c9a4771447a84dbb556.tar.gz |
Re-write recursion handling to fix another compiler bug and make it all less
error-prone.
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@338 6239d852-aaf2-0410-a92c-79f79f948069
Diffstat (limited to 'src/pcre2_intmodedep.h')
-rw-r--r-- | src/pcre2_intmodedep.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/pcre2_intmodedep.h b/src/pcre2_intmodedep.h index f20f71e..704c375 100644 --- a/src/pcre2_intmodedep.h +++ b/src/pcre2_intmodedep.h @@ -647,6 +647,13 @@ typedef struct recurse_check { PCRE2_SPTR group; } recurse_check; +/* Structure for building a cache when filling in recursion offsets. */ + +typedef struct recurse_cache { + PCRE2_SPTR group; + int recno; +} recurse_cache; + /* Structure for maintaining a chain of pointers to the currently incomplete branches, for testing for left recursion while compiling. */ @@ -678,7 +685,6 @@ typedef struct compile_block { PCRE2_SPTR start_code; /* The start of the compiled code */ PCRE2_SPTR start_pattern; /* The start of the pattern */ PCRE2_SPTR end_pattern; /* The end of the pattern */ - PCRE2_UCHAR *hwm; /* High watermark of workspace */ PCRE2_UCHAR *name_table; /* The name/number table */ size_t workspace_size; /* Size of workspace */ uint16_t names_found; /* Number of entries so far */ @@ -701,6 +707,7 @@ typedef struct compile_block { int req_varyopt; /* "After variable item" flag for reqbyte */ BOOL had_accept; /* (*ACCEPT) encountered */ BOOL had_pruneorskip; /* (*PRUNE) or (*SKIP) encountered */ + BOOL had_recurse; /* Had a recursion or subroutine call */ BOOL check_lookbehind; /* Lookbehinds need later checking */ BOOL dupnames; /* Duplicate names exist */ BOOL iscondassert; /* Next assert is a condition */ |