aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2020-04-22 18:58:45 -0700
committerPaul Eggert2020-04-22 19:00:58 -0700
commit023ff119fb511e262e7cd64b8abb7482720ac4a6 (patch)
tree9e28b244186bfc53fa8aa43c2e12d59e01662b28 /src
parentab214143bbc633bcbe1ae146647c2fdc882122f0 (diff)
downloademacs-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.c6
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);