]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix more single-byte accesses caused by bytepos/charpos confusion
authorPip Cet <pipcet@gmail.com>
Sun, 27 Sep 2020 15:40:07 +0000 (17:40 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 27 Sep 2020 15:40:07 +0000 (17:40 +0200)
* src/cmds.c (internal_self_insert): Use FETCH_BYTE, not
FETCH_CHAR, for a decremented byte position (bug#41520).

* src/xdisp.c (Fwindow_text_pixel_size, trailing_whitespace_p): Ditto.

src/cmds.c
src/xdisp.c

index 90526612b7a9441ea6e334beae0febff1b5d1880..c29cf00dad1f95529f71f514d21e960c32259f2f 100644 (file)
@@ -390,7 +390,7 @@ internal_self_insert (int c, EMACS_INT n)
                     by spaces so that the remaining text won't move.  */
                  ptrdiff_t actual = PT_BYTE;
                  actual -= prev_char_len (actual);
-                 if (FETCH_CHAR (actual) == '\t')
+                 if (FETCH_BYTE (actual) == '\t')
                    /* Rather than add spaces, let's just keep the tab. */
                    chars_to_delete--;
                  else
index 3d40878be65381ce1c31291f48e7fd75ddd468d8..ecd23e0d0fcd61d31eddba7d58e2d3ed978d9c48 100644 (file)
@@ -10619,7 +10619,7 @@ include the height of both, if present, in the return value.  */)
       while (bpos > BEGV_BYTE)
        {
          dec_both (&start, &bpos);
-         c = FETCH_CHAR (bpos);
+         c = FETCH_BYTE (bpos);
          if (!(c == ' ' || c == '\t'))
            break;
        }
@@ -10641,7 +10641,7 @@ include the height of both, if present, in the return value.  */)
       while (bpos > BEGV_BYTE)
        {
          dec_both (&end, &bpos);
-         c = FETCH_CHAR (bpos);
+         c = FETCH_BYTE (bpos);
          if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
            break;
        }
@@ -22277,7 +22277,7 @@ trailing_whitespace_p (ptrdiff_t charpos)
   int c = 0;
 
   while (bytepos < ZV_BYTE
-        && (c = FETCH_CHAR (bytepos),
+        && (c = FETCH_BYTE (bytepos),
             c == ' ' || c == '\t'))
     ++bytepos;