]> git.eshelyaron.com Git - emacs.git/commitdiff
Restore runtime check for invalid tag
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 22 Feb 2020 16:04:16 +0000 (08:04 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 22 Feb 2020 16:05:59 +0000 (08:05 -0800)
* src/data.c (wrong_type_argument): Restore check that the
object’s tag is valid, since invalid tags exist again.
* src/lisp.h (Lisp_Type_Unused0): New constant.

src/data.c
src/lisp.h

index fae9cee7db1787a78ce3035de1e4e926c09f0d4f..460cb9330c07156b9d8b0f447234018ee4b2c532 100644 (file)
@@ -143,15 +143,9 @@ wrong_length_argument (Lisp_Object a1, Lisp_Object a2, Lisp_Object a3)
 }
 
 AVOID
-wrong_type_argument (register Lisp_Object predicate, register Lisp_Object value)
+wrong_type_argument (Lisp_Object predicate, Lisp_Object value)
 {
-  /* If VALUE is not even a valid Lisp object, we'd want to abort here
-     where we can get a backtrace showing where it came from.  We used
-     to try and do that by checking the tagbits, but nowadays all
-     tagbits are potentially valid.  */
-  /* if ((unsigned int) XTYPE (value) >= Lisp_Type_Limit)
-   *   emacs_abort (); */
-
+  eassert (!TAGGEDP (value, Lisp_Type_Unused0));
   xsignal2 (Qwrong_type_argument, predicate, value);
 }
 
index 0bd375658e21255c58cc7a9d1b1efbae57febc5b..a379977d353a4027d809b52596e8acbc530efccf 100644 (file)
@@ -481,6 +481,7 @@ enum Lisp_Type
     Lisp_Symbol = 0,
 
     /* Type 1 is currently unused.  */
+    Lisp_Type_Unused0 = 1,
 
     /* Fixnum.  XFIXNUM (obj) is the integer value.  */
     Lisp_Int0 = 2,