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
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
18 aug. 2020 kl. 19.28 skrev Alan Third <alan <at> idiocy.org>:
> Looks good to me. The only thought I have is that perhaps we should
> consider extending NSString to handle these lisp strings rather than
> making it a separate function? We could provide a method to convert to
> a lisp string as well, although that's not as complex.
>
> I believe using categories would do it without us having to create a
> new EmacsString class or similar.
Fun, I hadn't done that before! Of course we should.
As it happens I just enjoyed the HOPL paper about the history of Objective-C (https://dl.acm.org/doi/10.1145/3386332). An excellent read in general, and it has some history about how the categories came about.
Here is an updated patch: it is now self-contained and does not change anything outside the NS backend.
There is a minor imperfection: the incoming name string can actually be miscoded if it contains both non-ASCII characters and raw bytes. As an example, consider
(rename-buffer "aéb\300")
In xdisp.c:12497, the Lisp name string is created using make_string which decides that the above multibyte string should really be unibyte, and that confuses the converter. It is of no great consequence, but it makes the result look messier than it should have: "a��b��c" instead of "aéb�c".
[0001-Fix-NS-crash-on-invalid-frame-title-string-bug-42904.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.