File tree Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -1748,9 +1748,11 @@ static size_t mb_fast_strlen_utf8(unsigned char *p, size_t len)
1748
1748
1749
1749
#ifdef __SSE2__
1750
1750
if (len >= sizeof (__m128i )) {
1751
+ e -= sizeof (__m128i );
1752
+
1751
1753
const __m128i threshold = _mm_set1_epi8 (-64 );
1752
1754
const __m128i delta = _mm_set1_epi8 (1 );
1753
- __m128i counter = _mm_set1_epi8 ( 0 ); /* Vector of 16 continuation-byte counters */
1755
+ __m128i counter = _mm_setzero_si128 ( ); /* Vector of 16 continuation-byte counters */
1754
1756
1755
1757
int reset_counter = 255 ;
1756
1758
do {
@@ -1762,13 +1764,14 @@ static size_t mb_fast_strlen_utf8(unsigned char *p, size_t len)
1762
1764
* and reset them to zero */
1763
1765
if (-- reset_counter == 0 ) {
1764
1766
len -= _mm_sum_epu8 (counter );
1765
- counter = _mm_set1_epi8 ( 0 );
1767
+ counter = _mm_setzero_si128 ( );
1766
1768
reset_counter = 255 ;
1767
1769
}
1768
1770
1769
1771
p += sizeof (__m128i );
1770
- } while (p + sizeof ( __m128i ) <= e );
1772
+ } while (p <= e );
1771
1773
1774
+ e += sizeof (__m128i );
1772
1775
len -= _mm_sum_epu8 (counter ); /* Fold in any remaining non-zero values in the 16 counters */
1773
1776
}
1774
1777
#endif
You can’t perform that action at this time.
0 commit comments