diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2022-01-16 11:58:00 +0100 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2022-01-20 11:44:07 +0100 |
commit | b929bdaeb6bcb919d4d1a5d02713cdcac3fc44d0 (patch) | |
tree | 8b0ee1ce3c8a355b67ac46ee26c3ec064997afc6 /src/bytecode.c | |
parent | b1488a6582d8557e3e3fd894d81bab165d4aca77 (diff) | |
download | emacs-b929bdaeb6bcb919d4d1a5d02713cdcac3fc44d0.tar.gz emacs-b929bdaeb6bcb919d4d1a5d02713cdcac3fc44d0.tar.bz2 emacs-b929bdaeb6bcb919d4d1a5d02713cdcac3fc44d0.zip |
Fix Fchar_syntax for non-ASCII in unibyte buffers
Fchar_syntax did not convert unibyte characters to multibyte when the
current buffer was unibyte, in contrast to `char-syntax` in
byte-compiled code (bug#53260).
* src/bytecode.c (exec_byte_code): Call out to Fchar_syntax;
the dynamic frequency is too low to justify inlining here, and it
did lead to implementations diverging.
* src/syntax.c (Fchar_syntax): Convert non-ASCII unibyte values to
multibyte.
* test/src/syntax-tests.el (syntax-char-syntax): New test.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r-- | src/bytecode.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 472992be180..b7e65d05aef 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1167,13 +1167,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, NEXT; CASE (Bchar_syntax): - { - CHECK_CHARACTER (TOP); - int c = XFIXNAT (TOP); - if (NILP (BVAR (current_buffer, enable_multibyte_characters))) - c = make_char_multibyte (c); - XSETFASTINT (TOP, syntax_code_spec[SYNTAX (c)]); - } + TOP = Fchar_syntax (TOP); NEXT; CASE (Bbuffer_substring): |