bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#42904: [PATCH] Non-Unicode frame title crashes Emacs on macOS


From: Mattias Engdegård
Subject: bug#42904: [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.

Attachment: 0001-Fix-NS-crash-on-invalid-frame-title-string.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]