mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-04 19:10:37 -08:00
(Fbyte_code): If arg BYTESTR is multibyte, convert it
to unibyte.
This commit is contained in:
parent
a9bcded1f3
commit
089b985ff9
1 changed files with 13 additions and 2 deletions
|
|
@ -401,12 +401,12 @@ If the third argument is incorrect, Emacs may crash.")
|
|||
#endif
|
||||
int op;
|
||||
/* Lisp_Object v1, v2; */
|
||||
Lisp_Object *vectorp = XVECTOR (vector)->contents;
|
||||
Lisp_Object *vectorp;
|
||||
#ifdef BYTE_CODE_SAFE
|
||||
int const_length = XVECTOR (vector)->size;
|
||||
Lisp_Object *stacke;
|
||||
#endif
|
||||
int bytestr_length = STRING_BYTES (XSTRING (bytestr));
|
||||
int bytestr_length;
|
||||
struct byte_stack stack;
|
||||
Lisp_Object *top;
|
||||
Lisp_Object result;
|
||||
|
|
@ -416,6 +416,17 @@ If the third argument is incorrect, Emacs may crash.")
|
|||
vector = wrong_type_argument (Qvectorp, vector);
|
||||
CHECK_NUMBER (maxdepth, 2);
|
||||
|
||||
if (STRING_MULTIBYTE (bytestr))
|
||||
/* BYTESTR must have been produced by Emacs 20.2 or the earlier
|
||||
because they produced a raw 8-bit string for byte-code and now
|
||||
such a byte-code string is loaded as multibyte while raw 8-bit
|
||||
characters converted to multibyte form. Thus, now we must
|
||||
convert them back to the original unibyte form. */
|
||||
bytestr = Fstring_as_unibyte (bytestr);
|
||||
|
||||
bytestr_length = STRING_BYTES (XSTRING (bytestr));
|
||||
vectorp = XVECTOR (vector)->contents;
|
||||
|
||||
stack.byte_string = bytestr;
|
||||
stack.pc = stack.byte_string_start = XSTRING (bytestr)->data;
|
||||
stack.constants = vector;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue