emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: balance-windows causes core dump


From: Stefan Monnier
Subject: Re: balance-windows causes core dump
Date: Thu, 13 Apr 2006 10:57:01 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

> Does this fix it?

It does, thanks,


        Stefan


> *** window.c  21 Mar 2006 17:05:43 -0500      1.540
> --- window.c  12 Apr 2006 23:15:34 -0400      
> ***************
> *** 4255,4272 ****
  
>     while (1)
>       {
>         p = XWINDOW (window);
>         parent = p->parent;
  
> !       /* Make sure there is a following window.  */
> !       if (NILP (parent)
> !       && (horiz_flag ? 1
> !           : NILP (XWINDOW (window)->next)))
>       {
>         Fset_window_configuration (old_config);
>         error ("No other window following this one");
>       }
  
>         /* Don't make this window too small.  */
>         if (XINT (CURSIZE (window)) + delta
>         < (horiz_flag ? window_min_width : window_min_height))
> --- 4255,4284 ----
  
>     while (1)
>       {
> +       Lisp_Object first_parallel = Qnil;
> + 
>         p = XWINDOW (window);
>         parent = p->parent;
  
> !       if (NILP (XWINDOW (window)->next))
>       {
>         Fset_window_configuration (old_config);
>         error ("No other window following this one");
>       }
  
> +       /* See if this level has windows in parallel in the specified
> +      direction.  If so, set FIRST_PARALLEL to the first one.  */
> +       if (horiz_flag)
> +     {
> +       if (! NILP (parent) && !NILP (XWINDOW (parent)->vchild))
> +         first_parallel = XWINDOW (parent)->vchild;
> +     }
> +       else
> +     {
> +       if (! NILP (parent) && !NILP (XWINDOW (parent)->hchild))
> +         first_parallel = XWINDOW (parent)->hchild;
> +     }
> + 
>         /* Don't make this window too small.  */
>         if (XINT (CURSIZE (window)) + delta
>         < (horiz_flag ? window_min_width : window_min_height))
> ***************
> *** 4284,4295 ****
>              XINT (CURSIZE (window)) + delta);
  
>         /* If this window has following siblings in the desired dimension,
> !      make them smaller.
>        (If we reach the top of the tree and can never do this,
>        we will fail and report an error, above.)  */
> !       if (horiz_flag
> !       ? !NILP (XWINDOW (parent)->hchild)
> !       : !NILP (XWINDOW (parent)->vchild))
>       {
>         if (!NILP (XWINDOW (window)->next))
>           {
> --- 4296,4306 ----
>              XINT (CURSIZE (window)) + delta);
  
>         /* If this window has following siblings in the desired dimension,
> !      make them smaller, and exit the loop.
> ! 
>        (If we reach the top of the tree and can never do this,
>        we will fail and report an error, above.)  */
> !       if (NILP (first_parallel))
>       {
>         if (!NILP (XWINDOW (window)->next))
>           {
> ***************
> *** 4311,4319 ****
>         else
>       /* Here we have a chain of parallel siblings, in the other dimension.
>          Change the size of the other siblings.  */
> !     for (child = (horiz_flag
> !                   ? XWINDOW (parent)->vchild
> !                   : XWINDOW (parent)->hchild);
>            ! NILP (child);
>            child = XWINDOW (child)->next)
>         if (! EQ (child, window))
> --- 4322,4328 ----
>         else
>       /* Here we have a chain of parallel siblings, in the other dimension.
>          Change the size of the other siblings.  */
> !     for (child = first_parallel;
>            ! NILP (child);
>            child = XWINDOW (child)->next)
>         if (! EQ (child, window))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]