From ac64fdb248d791b204cf579f878f8542ded0d067 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 26 Nov 2017 19:15:14 -0800 Subject: [PATCH] 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. --- src/bytecode.c | 6 ++---- 1 file 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):