Fix clear-string crash with text properties
* src/fns.c (Fclear_string): Fix crash by clearing all text properties. (Bug#75581) * doc/lispref/strings.texi (Modifying Strings): Document the above behavior change. Fix proposed by Andreas Schwab <schwab@linux-m68k.org>.
This commit is contained in:
parent
86916c136b
commit
4f946a6522
2 changed files with 8 additions and 5 deletions
|
@ -478,8 +478,9 @@ a raw byte.
|
|||
@code{clear-string}:
|
||||
|
||||
@defun clear-string string
|
||||
This makes @var{string} a unibyte string and clears its contents to
|
||||
null characters. It may also change @var{string}'s length.
|
||||
This makes @var{string} a unibyte string, clears its contents to null
|
||||
characters, and removes all text properties. It may also change
|
||||
@var{string}'s length.
|
||||
@end defun
|
||||
|
||||
@need 2000
|
||||
|
|
|
@ -3307,14 +3307,16 @@ ARRAY is a vector, string, char-table, or bool-vector. */)
|
|||
return array;
|
||||
}
|
||||
|
||||
DEFUN ("clear-string", Fclear_string, Sclear_string,
|
||||
1, 1, 0,
|
||||
DEFUN ("clear-string", Fclear_string, Sclear_string, 1, 1, 0,
|
||||
doc: /* Clear the contents of STRING.
|
||||
This makes STRING unibyte and may change its length. */)
|
||||
This makes STRING unibyte, clears its contents to null characters, and
|
||||
removes all text properties. This may change its length. */)
|
||||
(Lisp_Object string)
|
||||
{
|
||||
CHECK_STRING (string);
|
||||
ptrdiff_t len = SBYTES (string);
|
||||
Fset_text_properties (make_fixnum (0), make_fixnum (SCHARS (string)),
|
||||
Qnil, string);
|
||||
if (len != 0 || STRING_MULTIBYTE (string))
|
||||
{
|
||||
CHECK_IMPURE (string, XSTRING (string));
|
||||
|
|
Loading…
Add table
Reference in a new issue