]> git.eshelyaron.com Git - emacs.git/commitdiff
Add an eassert back to XSYMBOL
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 22 Jan 2024 04:34:03 +0000 (20:34 -0800)
committerEshel Yaron <me@eshelyaron.com>
Mon, 22 Jan 2024 16:55:03 +0000 (17:55 +0100)
Problem reported by Alan Mackenzie in:
https://lists.gnu.org/r/emacs-devel/2024-01/msg00755.html
* src/lisp.h (XSYMBOL): If the arg is not a bare symbol, then
eassert (symbols_with_pos_enabled).  This shouldn’t affect code
generated for regular builds, and could catch caller errors in
debug builds.  For debug builds although this slows things down
XSYMBOL should still be faster than it was the day before
yesterday, as there’s still no need to eassert (SYMBOLP (a)).

(cherry picked from commit 088afa7e2f08f4eb4e39aae5db4faa33857bf544)

src/lisp.h

index 29d2a08785ae469e073ceed3a050ce645594a2a5..efdb38861413c88e661c3474ea0da1e020cb0e17 100644 (file)
@@ -1161,7 +1161,12 @@ XBARE_SYMBOL (Lisp_Object a)
 INLINE struct Lisp_Symbol * ATTRIBUTE_NO_SANITIZE_UNDEFINED
 XSYMBOL (Lisp_Object a)
 {
-  return XBARE_SYMBOL (BARE_SYMBOL_P (a) ? a : XSYMBOL_WITH_POS (a)->sym);
+  if (!BARE_SYMBOL_P (a))
+    {
+      eassert (symbols_with_pos_enabled);
+      a = XSYMBOL_WITH_POS (a)->sym;
+    }
+  return XBARE_SYMBOL (a);
 }
 
 INLINE Lisp_Object