From: Vibhav Pant Date: Sat, 11 Feb 2017 14:43:54 +0000 (+0530) Subject: src/bytecode.c: Add optional sanity check for jump tables. X-Git-Tag: emacs-26.0.90~847 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7c2d493540b6e2e1661397812c5ed9fcff04e36c;p=emacs.git src/bytecode.c: Add optional sanity check for jump tables. * src/bytecode.c (exec_byte_code): When sanity checks are enabled, check that the jump table's size is equal to it's count. --- diff --git a/src/bytecode.c b/src/bytecode.c index f3eab60c593..29674a0d9de 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1422,14 +1422,15 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, Lisp_Object v1 = POP; ptrdiff_t i; struct Lisp_Hash_Table *h = XHASH_TABLE(jmp_table); + /* Hash tables for switch are declared with :size set to the + exact number of cases. */ + if (BYTE_CODE_SAFE) + eassert (HASH_TABLE_SIZE (h) == h->count); if (h->count <= 5) { /* Do a linear search if there are not many cases FIXME: 5 is arbitrarily chosen. */ EMACS_UINT hash_code = h->test.hashfn (&h->test, v1); - /* Hash tables for switch are declared with :size set to the - exact number of cases, thus - HASH_TABLE_SIZE (h) == h->count. */ for (i = 0; i < h->count; i++) { if (BYTE_CODE_SAFE)