@@ -173,7 +173,7 @@ SRE(charset)(SRE_CODE* set, SRE_CODE ch)
173173 }
174174}
175175
176- LOCAL (Py_ssize_t ) SRE (match )(SRE_STATE * state , SRE_CODE * pattern );
176+ LOCAL (Py_ssize_t ) SRE (match )(SRE_STATE * state , SRE_CODE * pattern , int match_all );
177177
178178LOCAL (Py_ssize_t )
179179SRE (count )(SRE_STATE * state , SRE_CODE * pattern , Py_ssize_t maxcount )
@@ -259,7 +259,7 @@ SRE(count)(SRE_STATE* state, SRE_CODE* pattern, Py_ssize_t maxcount)
259259 /* repeated single character pattern */
260260 TRACE (("|%p|%p|COUNT SUBPATTERN\n" , pattern , ptr ));
261261 while ((SRE_CHAR * ) state -> ptr < end ) {
262- i = SRE (match )(state , pattern );
262+ i = SRE (match )(state , pattern , 0 );
263263 if (i < 0 )
264264 return i ;
265265 if (!i )
@@ -490,7 +490,7 @@ typedef struct {
490490/* check if string matches the given pattern. returns <0 for
491491 error, 0 for failure, and 1 for success */
492492LOCAL (Py_ssize_t )
493- SRE (match )(SRE_STATE * state , SRE_CODE * pattern )
493+ SRE (match )(SRE_STATE * state , SRE_CODE * pattern , int match_all )
494494{
495495 SRE_CHAR * end = (SRE_CHAR * )state -> end ;
496496 Py_ssize_t alloc_pos , ctx_pos = -1 ;
@@ -507,7 +507,7 @@ SRE(match)(SRE_STATE* state, SRE_CODE* pattern)
507507 ctx -> last_ctx_pos = -1 ;
508508 ctx -> jump = JUMP_NONE ;
509509 ctx -> pattern = pattern ;
510- ctx -> match_all = state -> match_all ;
510+ ctx -> match_all = match_all ;
511511 ctx_pos = alloc_pos ;
512512
513513entrance :
@@ -739,7 +739,7 @@ SRE(match)(SRE_STATE* state, SRE_CODE* pattern)
739739 RETURN_FAILURE ;
740740
741741 if (ctx -> pattern [ctx -> pattern [0 ]] == SRE_OP_SUCCESS &&
742- (! ctx -> match_all || ctx -> ptr == state -> end ) ) {
742+ ctx -> ptr == state -> end ) {
743743 /* tail is empty. we're finished */
744744 state -> ptr = ctx -> ptr ;
745745 RETURN_SUCCESS ;
@@ -824,7 +824,7 @@ SRE(match)(SRE_STATE* state, SRE_CODE* pattern)
824824 }
825825
826826 if (ctx -> pattern [ctx -> pattern [0 ]] == SRE_OP_SUCCESS &&
827- (!ctx -> match_all || ctx -> ptr == state -> end )) {
827+ (!match_all || ctx -> ptr == state -> end )) {
828828 /* tail is empty. we're finished */
829829 state -> ptr = ctx -> ptr ;
830830 RETURN_SUCCESS ;
@@ -1269,7 +1269,7 @@ SRE(search)(SRE_STATE* state, SRE_CODE* pattern)
12691269 state -> ptr = ptr - (prefix_len - prefix_skip - 1 );
12701270 if (flags & SRE_INFO_LITERAL )
12711271 return 1 ; /* we got all of it */
1272- status = SRE (match )(state , pattern + 2 * prefix_skip );
1272+ status = SRE (match )(state , pattern + 2 * prefix_skip , 0 );
12731273 if (status != 0 )
12741274 return status ;
12751275 /* close but no cigar -- try again */
@@ -1302,7 +1302,7 @@ SRE(search)(SRE_STATE* state, SRE_CODE* pattern)
13021302 state -> ptr = ++ ptr ;
13031303 if (flags & SRE_INFO_LITERAL )
13041304 return 1 ; /* we got all of it */
1305- status = SRE (match )(state , pattern + 2 );
1305+ status = SRE (match )(state , pattern + 2 , 0 );
13061306 if (status != 0 )
13071307 break ;
13081308 }
@@ -1317,7 +1317,7 @@ SRE(search)(SRE_STATE* state, SRE_CODE* pattern)
13171317 TRACE (("|%p|%p|SEARCH CHARSET\n" , pattern , ptr ));
13181318 state -> start = ptr ;
13191319 state -> ptr = ptr ;
1320- status = SRE (match )(state , pattern );
1320+ status = SRE (match )(state , pattern , 0 );
13211321 if (status != 0 )
13221322 break ;
13231323 ptr ++ ;
@@ -1327,7 +1327,7 @@ SRE(search)(SRE_STATE* state, SRE_CODE* pattern)
13271327 while (ptr <= end ) {
13281328 TRACE (("|%p|%p|SEARCH\n" , pattern , ptr ));
13291329 state -> start = state -> ptr = ptr ++ ;
1330- status = SRE (match )(state , pattern );
1330+ status = SRE (match )(state , pattern , 0 );
13311331 if (status != 0 )
13321332 break ;
13331333 }
0 commit comments