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

From: martin rudalics <[email-masked]>
Date: Tue, 23 Sep 2014 18:15:49 +0200

>> 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.

 >> 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.

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

martin