Subject: bug#28661: 25.3; closing fullscreen frame on macOS 10.13 High Sierra causes crash

From: Alan Third <[email-masked]>
Date: Sat, 7 Oct 2017 16:08:23 +0100

On Wed, Oct 04, 2017 at 05:44:13PM -0700, John Mastro wrote:
> Alan Third <[email-masked]> wrote:
> > I guess that closing a fullscreen window now results in it being
> > resized. But is emacsframe already trashed by this point? That would
> > certainly cause a crash.
> >
> > Can you please uncomment line 54 in nsterm.h to enable NSTRACE,
> > recompile, cause the crash and send the output to me?
> 
> I've done so and the trace is attached.

Thank you!

It looks like it is trying to resize the frame after we’ve already
cleaned it up. Do fullscreen windows animate when they close on 10.13?

Anyway, I’ve attached a patch, can you give it a go and see if it
works?
-- 
Alan Third
>From c544ffbf0ed005729f40d358a39cbf01b3577795 Mon Sep 17 00:00:00 2001
From: Alan Third <[email-masked]>
Date: Sat, 7 Oct 2017 16:00:49 +0100
Subject: [PATCH] Fix crash when closing fullscreen frame on macOS (bug#28661)

* src/nsterm.m (EmacsView::windowWillResize): Return new frame size
unmodified if the frame isn't live.
---
 src/nsterm.m | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/nsterm.m b/src/nsterm.m
index f0b6a70dae..abfdffc9f5 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6893,6 +6893,9 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize
   NSTRACE_RECT   ("[sender frame]", [sender frame]);
   NSTRACE_FSTYPE ("fs_state", fs_state);
 
+  if (!FRAME_LIVE_P (emacsframe))
+    return frameSize;
+
   if (fs_state == FULLSCREEN_MAXIMIZED
       && (maximized_width != (int)frameSize.width
           || maximized_height != (int)frameSize.height))
-- 
2.14.1