mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Merged revisions 66364 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r66364 | guido.van.rossum | 2008-09-10 07:27:00 -0700 (Wed, 10 Sep 2008) | 3 lines Issue #3629: Fix sre "bytecode" validator for an end case. Reviewed by Amaury. ........
This commit is contained in:
parent
93cbca33f2
commit
92f8f3e013
2 changed files with 8 additions and 3 deletions
|
@ -2780,17 +2780,18 @@ _compile(PyObject* self_, PyObject* args)
|
|||
arg = *code++; \
|
||||
VTRACE(("%lu (arg)\n", (unsigned long)arg)); \
|
||||
} while (0)
|
||||
#define GET_SKIP \
|
||||
#define GET_SKIP_ADJ(adj) \
|
||||
do { \
|
||||
VTRACE(("%p= ", code)); \
|
||||
if (code >= end) FAIL; \
|
||||
skip = *code; \
|
||||
VTRACE(("%lu (skip to %p)\n", \
|
||||
(unsigned long)skip, code+skip)); \
|
||||
if (code+skip < code || code+skip > end) \
|
||||
if (code+skip-adj < code || code+skip-adj > end)\
|
||||
FAIL; \
|
||||
code++; \
|
||||
} while (0)
|
||||
#define GET_SKIP GET_SKIP_ADJ(0)
|
||||
|
||||
static int
|
||||
_validate_charset(SRE_CODE *code, SRE_CODE *end)
|
||||
|
@ -3097,7 +3098,7 @@ _validate_inner(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
|
|||
GET_ARG;
|
||||
if (arg >= groups)
|
||||
FAIL;
|
||||
GET_SKIP;
|
||||
GET_SKIP_ADJ(1);
|
||||
code--; /* The skip is relative to the first arg! */
|
||||
/* There are two possibilities here: if there is both a 'then'
|
||||
part and an 'else' part, the generated code looks like:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue