Files
emacs/test/src
Mattias Engdegård 308e3ab1db Disallow string data resizing (bug#79784)
Only allow string mutation that is certain not to require string data to
be resized and reallocated: writing bytes into a unibyte string, and
changing ASCII to ASCII in a multibyte string.

This ensures that mutation will never transform a unibyte string to
multibyte, that the size of a string in bytes never changes, and that
the byte offsets of characters remain the same.  Most importantly, it
removes a long-standing obstacle to reform of string representation and
allow for future performance improvements.

* src/data.c (Faset): Disallow resizing string mutation.
* src/fns.c (clear_string_char_byte_cache):
* src/alloc.c (resize_string_data):  Remove.
* test/src/data-tests.el (data-aset-string): New test.
* test/lisp/subr-tests.el (subr--subst-char-in-string):
Skip error cases.
* test/src/alloc-tests.el (aset-nbytes-change):
Remove test that is no longer relevant.
* doc/lispref/strings.texi (Modifying Strings):
* doc/lispref/sequences.texi (Array Functions):
* doc/lispref/text.texi (Substitution):  Update manual.
* etc/NEWS: Announce.
2025-08-24 10:28:27 +02:00
..
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-07-17 10:40:33 +03:00
2025-08-07 17:43:58 +03:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-08-10 07:40:58 +03:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00
2025-01-02 18:39:42 +01:00