Subject: bug#18528: 24.3.93; Crash during restoration of frameset from desktop

From: Eli Zaretskii <[email-masked]>
Date: Tue, 23 Sep 2014 21:46:06 +0300

> Date: Tue, 23 Sep 2014 18:15:49 +0200
> From: martin rudalics <[email-masked]>
> CC: [email-masked]
> 
>  >> We have to check these values anyway because our window structure might
>  >> be too complex to fit into the rectangle returned by GetClientRect.
>  >
>  > Sorry, I don't think I understand this.  GetClientRect just returns
>  > the dimensions of our frame, it doesn't know anything about Emacs
>  > windows.
> 
> If all values returned by GetClientRect are zero, it's all to obvious
> that our windows won't fit.  But if, for example, rect.right - rect.left
> is too small to fit our windows, we face a similar same problem and have
> to handle that anyway.  So I'm not sure whether we should separately
> deal with the case where all rectangle values are zero.

When they are zero, we know we shouldn't even call change_frame_size.

>  >> I never got around to ask you: Do you anywhere see a need to round up
>  >> the values of new_cols and new_lines in cases like this?
>  >
>  > Yes, I think so.  I think the reason we didn't see any problems with
>  > that is that GUI windows always over-allocate their glyph matrices, to
>  > be prepared for dealing with the smallest possible font, which is
>  > rarely if ever used.  But I think if you actually use that smallest
>  > font for the default face, you will see the problem.
> 
> I thought it's not needed because in required_matrix_width we use the
> pixel width when HAVE_WINDOW_SYSTEM is defined.

Is this a response to what's above or to what's below?

>  > (Just make sure you don't round up for TTY frames, so as not to add
>  > one extra row there.)