From 5f8a053c60fc16099ab00d205b43873696857e65 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Wed, 15 Jan 2025 23:11:16 +0100 Subject: [PATCH] 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 . (cherry picked from commit 4f946a652278cc72a777fe56999bc4525f53e03a) --- doc/lispref/strings.texi | 5 +++-- src/fns.c | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index da0c1abd348..93025574893 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -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 diff --git a/src/fns.c b/src/fns.c index 12c7fc017cd..11348c12c53 100644 --- a/src/fns.c +++ b/src/fns.c @@ -3305,14 +3305,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)); -- 2.39.5