summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2020-05-25 17:07:22 +0300
committerEli Zaretskii <eliz@gnu.org>2020-05-25 17:07:22 +0300
commitdf91c94ca8e87a106c1e8e573802d4e299d26404 (patch)
tree7c0636ae55ff905cffe57bceea0e9541281d05c6 /src
parent478638e4706716b74de5b1aa3e85c8fd943f17ba (diff)
downloademacs-df91c94ca8e87a106c1e8e573802d4e299d26404.tar.gz
emacs-df91c94ca8e87a106c1e8e573802d4e299d26404.tar.bz2
emacs-df91c94ca8e87a106c1e8e573802d4e299d26404.zip
Fix access to single-byte characters in buffer text
* src/xdisp.c (get_visually_first_element) (Fbidi_find_overridden_directionality): * src/cmds.c (Fend_of_line): Use FETCH_BYTE instead of FETCH_CHAR, and byte position instead of character position, to access individual bytes of buffer text. This avoids producing invalid characters and accessing wrong buffer positions. (Bug#41520)
Diffstat (limited to 'src')
-rw-r--r--src/cmds.c4
-rw-r--r--src/xdisp.c6
2 files changed, 5 insertions, 5 deletions
diff --git a/src/cmds.c b/src/cmds.c
index 5d7a45e65f6..9914b7a01f7 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -203,7 +203,7 @@ to t. */)
SET_PT (newpos);
if (PT > newpos
- && FETCH_CHAR (PT - 1) == '\n')
+ && FETCH_BYTE (PT_BYTE - 1) == '\n')
{
/* If we skipped over a newline that follows
an invisible intangible run,
@@ -214,7 +214,7 @@ to t. */)
break;
}
else if (PT > newpos && PT < ZV
- && FETCH_CHAR (PT) != '\n')
+ && FETCH_BYTE (PT_BYTE) != '\n')
/* If we skipped something intangible
and now we're not really at eol,
keep going. */
diff --git a/src/xdisp.c b/src/xdisp.c
index 1e865898e37..bff6218106b 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -8264,8 +8264,8 @@ get_visually_first_element (struct it *it)
}
else if (it->bidi_it.charpos == bob
|| (!string_p
- && (FETCH_CHAR (it->bidi_it.bytepos - 1) == '\n'
- || FETCH_CHAR (it->bidi_it.bytepos) == '\n')))
+ && (FETCH_BYTE (it->bidi_it.bytepos - 1) == '\n'
+ || FETCH_BYTE (it->bidi_it.bytepos) == '\n')))
{
/* If we are at the beginning of a line/string, we can produce
the next element right away. */
@@ -24157,7 +24157,7 @@ the `bidi-class' property of a character. */)
itb.charpos = BEGV;
itb.bytepos = BEGV_BYTE;
}
- else if (FETCH_CHAR (from_bpos - 1) == '\n')
+ else if (FETCH_BYTE (from_bpos - 1) == '\n')
{
itb.charpos = from_pos;
itb.bytepos = from_bpos;