diff options
author | Paul Eggert <eggert@union> | 2017-11-26 19:15:14 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2017-11-26 19:16:47 -0800 |
commit | ac64fdb248d791b204cf579f878f8542ded0d067 (patch) | |
tree | 64bf9c2453b2cbec09d372ccdbd8aead9e508f99 /src/bytecode.c | |
parent | 700f74e4c8d1b33cdf96dab9586dc41ebccaba7d (diff) | |
download | emacs-ac64fdb248d791b204cf579f878f8542ded0d067.tar.gz |
Harden exec_byte_code against redefining 'error'
Problem discovered by configuring with --enable-gcc-warnings on
Ubuntu 17.10 x86-64 with gcc (Ubuntu 7.2.0-8ubuntu3).
* src/bytecode.c (exec_byte_code): Call the C error function
instead of the Lisp one, so that the Emacs interpreter does not go
haywire if the user redefines the Lisp error function.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r-- | src/bytecode.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index ebaf3c3a7fc..8746568f166 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1346,10 +1346,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, /* Actually this is Bstack_ref with offset 0, but we use Bdup for that instead. */ /* CASE (Bstack_ref): */ - call3 (Qerror, - build_string ("Invalid byte opcode: op=%s, ptr=%d"), - make_number (op), - make_number (pc - 1 - bytestr_data)); + error ("Invalid byte opcode: op=%d, ptr=%"pD"d", + op, pc - 1 - bytestr_data); /* Handy byte-codes for lexical binding. */ CASE (Bstack_ref1): |