@@ -492,7 +492,7 @@ SRE_COUNT(SRE_STATE* state, SRE_CODE* pattern, Py_ssize_t maxcount)
492492 Py_ssize_t i ;
493493
494494 /* adjust end */
495- if (maxcount < end - ptr && maxcount != 65535 )
495+ if (maxcount < ( end - ptr ) / state -> charsize && maxcount != 65535 )
496496 end = ptr + maxcount * state -> charsize ;
497497
498498 switch (pattern [0 ]) {
@@ -583,7 +583,7 @@ SRE_INFO(SRE_STATE* state, SRE_CODE* pattern)
583583 Py_ssize_t i ;
584584
585585 /* check minimal length */
586- if (pattern [3 ] && (end - ptr ) < pattern [3 ])
586+ if (pattern [3 ] && (end - ptr )/ state -> charsize < pattern [3 ])
587587 return 0 ;
588588
589589 /* check known prefix */
@@ -801,7 +801,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern)
801801 /* <INFO> <1=skip> <2=flags> <3=min> ... */
802802 if (ctx -> pattern [3 ] && (end - ctx -> ptr )/state -> charsize < ctx -> pattern [3 ]) {
803803 TRACE (("reject (got %d chars, need %d)\n" ,
804- (end - ctx -> ptr ), ctx -> pattern [3 ]));
804+ (end - ctx -> ptr )/ state -> charsize , ctx -> pattern [3 ]));
805805 RETURN_FAILURE ;
806806 }
807807 ctx -> pattern += ctx -> pattern [1 ] + 1 ;
@@ -1329,9 +1329,10 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern)
13291329 RETURN_FAILURE ;
13301330 while (p < e ) {
13311331 if (ctx -> ptr >= end ||
1332- state -> lower (SRE_CHARGET (state , ctx -> ptr , 0 )) != state -> lower (* p ))
1332+ state -> lower (SRE_CHARGET (state , ctx -> ptr , 0 )) !=
1333+ state -> lower (SRE_CHARGET (state , p , 0 )))
13331334 RETURN_FAILURE ;
1334- p ++ ;
1335+ p += state -> charsize ;
13351336 ctx -> ptr += state -> charsize ;
13361337 }
13371338 }
0 commit comments