--- Begin Message ---
Subject: |
[PATCH] Non-Unicode frame title crashes Emacs on macOS |
Date: |
Mon, 17 Aug 2020 16:11:52 +0200 |
Setting a frame title that contains non-Unicode characters causes a crash in
the NS backend. (Other platforms may or may not deal with it appropriately --
if you have the opportunity to test, please report.)
Since the title is typically derived from the buffer name, this is easily
reproduced by
(rename-buffer "n\351")
The crash occurs in ns_set_name_internal:
encoded_name = ENCODE_UTF_8 (name);
Here encoded_name is still "n\351" (a 2 byte unibyte string), because the \351
couldn't be encoded.
str = [NSString stringWithUTF8String: SSDATA (encoded_name)];
Now str is nil since "n\351" isn't valid UTF-8.
[[view window] setTitle: str];
Here we get an NS crash because nil isn't a valid setTitle: argument.
Proposed patch attached. I didn't find any obvious way to encode an Emacs
string into valid UTF-8 (with bad parts replaced) so a new function was
written. The corresponding Lisp function was marked internal because it's only
there for test purposes, but it could of course be promoted to non-internal if
someone wants it.
0001-Fix-NS-crash-on-invalid-frame-title-string.patch
Description: Binary data
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#42904: [PATCH] Non-Unicode frame title crashes Emacs on macOS |
Date: |
Thu, 20 Aug 2020 19:44:11 +0200 |
20 aug. 2020 kl. 15.24 skrev Alan Third <alan@idiocy.org>:
> It looks good to me. The only thing I'd like you to change is to move
> the implementation down to the "Class implementations" part of
> nsfns.m.
Moved, and pushed. Thank you!
--- End Message ---