Ted Unangst <ted.unan...@gmail.com> writes:

> On Sun, 13 Feb 2011, Christian Neukirchen wrote:
>
>> Catching up on this bug, which has hit some other users I know now as well.
>
>> > For some reason cc->stackingorder is bigger than gc->highstack (which is
>> > 0 in above use case), thus the assignment writes to a negative address
>> > relative to winlist.  I can reproduce that on OpenBSD 4.8/cwm HEAD as
>
> easiest fix is to apply a liberal dose of the big hammer:
>
> Index: group.c
> ===================================================================
> RCS file: /cvs/xenocara/app/cwm/group.c,v
> retrieving revision 1.48
> diff -u group.c
> --- group.c   25 Sep 2010 20:01:27 -0000      1.48
> +++ group.c   13 Feb 2011 02:07:37 -0000
> @@ -108,6 +108,11 @@
>       u_int                    i;
>       int                      lastempty = -1;
>  
> +     gc->highstack = 0;
> +     TAILQ_FOREACH(cc, &gc->clients, group_entry) {
> +             if (cc->stackingorder > gc->highstack)
> +                     gc->highstack = cc->stackingorder;
> +     }
>       winlist = (Window *) xcalloc(sizeof(*winlist), (gc->highstack + 1));
>  
>       /*

That seems to fix it, thanks.

-- 
Christian Neukirchen  <chneukirc...@gmail.com>  http://chneukirchen.org

Reply via email to