Subject: bug#56347: Optimize/simplify STRING_SET_MULTIBYTE

From: Stefan Monnier <[email-masked]>
Date: Sat, 02 Jul 2022 14:00:41 -0400

>> No, I want to reduce the scope of semantics of the macro, e.g. so it can
>> be implemented as a function rather than a macro and so it doesn't
>> magically substitute empty_multibyte_string into a variable that held
>> something else.
> But the effect is that you disallow calling STRING_SET_MULTIBYTE on an
> empty string, isn't it?

Yes.  In my book, STRING_SET_*IBYTE should basically not exist: a string
is created as unibyte or multibyte and never changes after that.

And indeed because we only have a single copy of the two possible empty
strings, they can't be changed between unibyte<->multibyte

        Stefan