[Top][All Lists]
[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))