Subject: Re: bug#9723: 24.0.50; Emacs Clipboard crash

From: martin rudalics <[email-masked]>
Date: Fri, 03 Feb 2012 19:23:30 +0100

> Inject a special code that overrides the "normal" values when
 > do_pending_window_change is called?

I added a Lisp variable frame-bomb and in change_frame_size do

   else if (CONSP (Vframe_bomb))
     change_frame_size_1 (f, XINT (Fcar (Vframe_bomb)), XINT (Fcdr (Vframe_bomb)), 0, 0, 0);
   else
     change_frame_size_1 (f, newheight, newwidth, pretend, delay, safe);

but this gets me a resized root window and NOT a resized frame so I am
still missing something.  In all cases w->total_cols was set to 2 for
the frame's selected window if I counted correctly (I divided by four).
Is there any way to print the value of an Elisp integer?  Nowhere did I
get a value of zero for w->total_cols.

In any case, the following excerpt from change_frame_size_1 is fishy:

   /* Compute width of windows in F.
      This is the width of the frame without vertical scroll bars.  */
   new_frame_total_cols = FRAME_TOTAL_COLS_ARG (f, newwidth);

   /* Round up to the smallest acceptable size.  */
   check_frame_size (f, &newheight, &newwidth);

This means that when "rounding" changes newwidth, the new value is NOT
reflected in new_frame_total_cols.  Interchanging these lines gets me a
w->total_cols of 6 for the window (again, if I counted correctly) which
seems slightly more correct to me.  WDYT?

martin