summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorGustavo Niemeyer <gustavo@niemeyer.net>2003-04-20 00:45:13 (GMT)
committerGustavo Niemeyer <gustavo@niemeyer.net>2003-04-20 00:45:13 (GMT)
commit1aca359e895d6cc8cc366fd8d8d0edbef13a5a13 (patch)
treec30e613564f1d61b55077400a1f320370fe0e81f /Modules
parent153c9e493e9850340fd686ab7a6e5c176953abd7 (diff)
downloadcpython-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.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_sre.c9
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;
}