[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: balance-windows causes core dump
From: |
Richard Stallman |
Subject: |
Re: balance-windows causes core dump |
Date: |
Wed, 12 Apr 2006 23:20:38 -0400 |
Does this fix it?
*** 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))