GNU bug report logs -
#42904
[PATCH] Non-Unicode frame title crashes Emacs on macOS
Previous Next
Reported by: Mattias Engdegård <mattiase <at> acm.org>
Date: Mon, 17 Aug 2020 14:13:02 UTC
Severity: normal
Tags: patch
Merged with 41184
Found in version 28.0.50
Done: Mattias Engdegård <mattiase <at> acm.org>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
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 (application/octet-stream, attachment)]
This bug report was last modified 4 years and 269 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.