------- Comment #2 from rguenth at gcc dot gnu dot org  2005-12-08 14:08 -------
Reduced testcase:

typedef long Lisp_Object;
extern Lisp_Object Qnil;
struct window {
    int pixel_top;
    int pixel_height; 
    int pixel_width;
    Lisp_Object next;
    Lisp_Object parent;
};
static void set_window_pixsize (Lisp_Object window, int new_pixsize, int
nodelete, int set_height) {
    struct window *w = ((struct window *) ((void *) (window)));
    struct window *c;
    int old_pixsize = (set_height ? ((w)->pixel_height) : ((w)->pixel_width));
    Lisp_Object child, minor_kid, major_kid;
    int minsize;
    int line_size;
    if (!nodelete
        && !(((w)->parent) == (Qnil))
        && new_pixsize < minsize)
      {
      }
    else if (!((major_kid) == (Qnil)))
      {
        int last_pos, last_old_pos, pos, old_pos, first;
        int div_val = old_pixsize << 1;
        for (child = major_kid; !((child) == (Qnil)); child = c->next)
          {
            c = ((struct window *) ((void *) (child)));
            if (set_height)
              {
                old_pos = last_old_pos + ((c)->pixel_height);
                ((c)->pixel_top) = last_pos;
              }
            pos = (((old_pos * new_pixsize) << 1) + old_pixsize) / div_val;
            if (!((c->next) == (Qnil)))
              pos = (pos / line_size) * line_size;
            set_window_pixsize (child, pos + first - last_pos, 1, set_height);
            last_pos = pos + first;
          }
      }
}
void set_window_pixheight (Lisp_Object window, int new_pixheight, int nodelete)
{
   set_window_pixsize (window, new_pixheight, nodelete, 1);
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25311

Reply via email to