diff options
| author | Paul Eggert | 2020-04-22 18:58:45 -0700 |
|---|---|---|
| committer | Paul Eggert | 2020-04-22 19:00:58 -0700 |
| commit | 023ff119fb511e262e7cd64b8abb7482720ac4a6 (patch) | |
| tree | 9e28b244186bfc53fa8aa43c2e12d59e01662b28 /src | |
| parent | ab214143bbc633bcbe1ae146647c2fdc882122f0 (diff) | |
| download | emacs-023ff119fb511e262e7cd64b8abb7482720ac4a6.tar.gz emacs-023ff119fb511e262e7cd64b8abb7482720ac4a6.zip | |
Tweak multibyte parsing loops
* src/character.c (parse_str_as_multibyte, str_as_multibyte):
Let the fast loop run a little longer, fixing what appears
to be an off-by-1 performance nit.
Diffstat (limited to 'src')
| -rw-r--r-- | src/character.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/character.c b/src/character.c index da09e77e131..edcec5f1c79 100644 --- a/src/character.c +++ b/src/character.c | |||
| @@ -512,7 +512,7 @@ parse_str_as_multibyte (const unsigned char *str, ptrdiff_t len, | |||
| 512 | 512 | ||
| 513 | if (len >= MAX_MULTIBYTE_LENGTH) | 513 | if (len >= MAX_MULTIBYTE_LENGTH) |
| 514 | { | 514 | { |
| 515 | const unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH; | 515 | const unsigned char *adjusted_endp = endp - (MAX_MULTIBYTE_LENGTH - 1); |
| 516 | while (str < adjusted_endp) | 516 | while (str < adjusted_endp) |
| 517 | { | 517 | { |
| 518 | int n = multibyte_length (str, NULL, false, false); | 518 | int n = multibyte_length (str, NULL, false, false); |
| @@ -556,7 +556,7 @@ str_as_multibyte (unsigned char *str, ptrdiff_t len, ptrdiff_t nbytes, | |||
| 556 | 556 | ||
| 557 | if (nbytes >= MAX_MULTIBYTE_LENGTH) | 557 | if (nbytes >= MAX_MULTIBYTE_LENGTH) |
| 558 | { | 558 | { |
| 559 | unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH; | 559 | unsigned char *adjusted_endp = endp - (MAX_MULTIBYTE_LENGTH - 1); |
| 560 | while (p < adjusted_endp) | 560 | while (p < adjusted_endp) |
| 561 | { | 561 | { |
| 562 | int n = multibyte_length (p, NULL, false, false); | 562 | int n = multibyte_length (p, NULL, false, false); |
| @@ -585,7 +585,7 @@ str_as_multibyte (unsigned char *str, ptrdiff_t len, ptrdiff_t nbytes, | |||
| 585 | 585 | ||
| 586 | if (nbytes >= MAX_MULTIBYTE_LENGTH) | 586 | if (nbytes >= MAX_MULTIBYTE_LENGTH) |
| 587 | { | 587 | { |
| 588 | unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH; | 588 | unsigned char *adjusted_endp = endp - (MAX_MULTIBYTE_LENGTH - 1); |
| 589 | while (p < adjusted_endp) | 589 | while (p < adjusted_endp) |
| 590 | { | 590 | { |
| 591 | int n = multibyte_length (p, NULL, false, false); | 591 | int n = multibyte_length (p, NULL, false, false); |