[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#62009: 29.0.60; Emacs crashes on setf symbol-name
From: |
Robert Pluim |
Subject: |
bug#62009: 29.0.60; Emacs crashes on setf symbol-name |
Date: |
Fri, 10 Mar 2023 12:30:48 +0100 |
>>>>> On Fri, 10 Mar 2023 12:09:59 +0100, Daniel Mendler
>>>>> <mail@daniel-mendler.de> said:
Daniel> One could check if the string is located in read-only memory. Or one
Daniel> could add a flag bit to the string data structure (and possibly to
other
Daniel> data structures too). Freezing data structures such that they become
Daniel> read-only is a generally useful feature. There won't be any
performance
Daniel> overhead of the check since a branch not taken is fast thanks to the
Daniel> branch predictor.
We already have such a flag:
/* Number of characters in string; MSB is used as the mark bit. */
ptrdiff_t size;
/* If nonnegative, number of bytes in the string (which is multibyte).
If negative, the string is unibyte:
-1 for data normally allocated
-2 for data in rodata (C string constants)
-3 for data that must be immovable (used for bytecode) */
ptrdiff_t size_byte;
Try this:
diff --git a/src/lisp.h b/src/lisp.h
index 1276285e2f2..80bbb047824 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1685,6 +1685,8 @@ SREF (Lisp_Object string, ptrdiff_t index)
INLINE void
SSET (Lisp_Object string, ptrdiff_t index, unsigned char new)
{
+ if (XSTRING (string)->u.s.size_byte == -2)
+ Fsignal (Qsetting_constant, string);
SDATA (string)[index] = new;
}
INLINE ptrdiff_t
Robert
--
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, (continued)
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Eli Zaretskii, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Gregory Heytings, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Daniel Mendler, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Gregory Heytings, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Daniel Mendler, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Augusto Stoffel, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Eli Zaretskii, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name,
Robert Pluim <=
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Daniel Mendler, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Eli Zaretskii, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Daniel Mendler, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Dmitry Gutov, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Gregory Heytings, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Eli Zaretskii, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Robert Pluim, 2023/03/10
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Po Lu, 2023/03/11
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Robert Pluim, 2023/03/13
- bug#62009: 29.0.60; Emacs crashes on setf symbol-name, Po Lu, 2023/03/13