diff options
Diffstat (limited to 'src/editfns.c')
-rw-r--r-- | src/editfns.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/editfns.c b/src/editfns.c index bee3bbc2cdd..82c6abb9987 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -2695,7 +2695,7 @@ called interactively, INHERIT is t. */) string[i] = str[i % len]; while (n > stringlen) { - QUIT; + maybe_quit (); if (!NILP (inherit)) insert_and_inherit (string, stringlen); else @@ -3053,6 +3053,7 @@ determines whether case is significant or ignored. */) i2 = begp2; i1_byte = buf_charpos_to_bytepos (bp1, i1); i2_byte = buf_charpos_to_bytepos (bp2, i2); + immediate_quit = true; while (i1 < endp1 && i2 < endp2) { @@ -3060,8 +3061,6 @@ determines whether case is significant or ignored. */) characters, not just the bytes. */ int c1, c2; - QUIT; - if (! NILP (BVAR (bp1, enable_multibyte_characters))) { c1 = BUF_FETCH_MULTIBYTE_CHAR (bp1, i1_byte); @@ -3093,14 +3092,17 @@ determines whether case is significant or ignored. */) c1 = char_table_translate (trt, c1); c2 = char_table_translate (trt, c2); } - if (c1 < c2) - return make_number (- 1 - chars); - if (c1 > c2) - return make_number (chars + 1); + if (c1 != c2) + { + immediate_quit = false; + return make_number (c1 < c2 ? -1 - chars : chars + 1); + } chars++; } + immediate_quit = false; + /* The strings match as far as they go. If one is shorter, that one is less. */ if (chars < endp1 - begp1) |