diff options
author | Gustavo Niemeyer <gustavo@niemeyer.net> | 2003-04-20 00:45:13 (GMT) |
---|---|---|
committer | Gustavo Niemeyer <gustavo@niemeyer.net> | 2003-04-20 00:45:13 (GMT) |
commit | 1aca359e895d6cc8cc366fd8d8d0edbef13a5a13 (patch) | |
tree | c30e613564f1d61b55077400a1f320370fe0e81f | |
parent | 153c9e493e9850340fd686ab7a6e5c176953abd7 (diff) | |
download | cpython-1aca359e895d6cc8cc366fd8d8d0edbef13a5a13.zip cpython-1aca359e895d6cc8cc366fd8d8d0edbef13a5a13.tar.gz cpython-1aca359e895d6cc8cc366fd8d8d0edbef13a5a13.tar.bz2 |
- Fixed bug #672491. This change restores the behavior of lastindex/lastgroup
to be compliant with previous python versions, by backing out the changes
made in revision 2.84 which affected this. The bugfix for backtracking is
still maintained.
-rw-r--r-- | Modules/_sre.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Modules/_sre.c b/Modules/_sre.c index 8cae095..be59112 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -879,11 +879,10 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern, int level) /* <MARK> <gid> */ TRACE(("|%p|%p|MARK %d\n", pattern, ptr, pattern[0])); i = pattern[0]; - if (i > state->lastmark) { + if (i & 1) + state->lastindex = i/2 + 1; + if (i > state->lastmark) state->lastmark = i; - if (i & 1) - state->lastindex = i/2 + 1; - } state->mark[i] = ptr; pattern++; break; @@ -1139,9 +1138,9 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern, int level) if (i) return i; i = mark_restore(state, 0, lastmark); + state->lastmark = lastmark; if (i < 0) return i; - lastmark_restore(state, lastmark); rp->count = count - 1; state->ptr = ptr; } |