On Mon, Feb 23, 2009 at 11:55:43AM +0000, Thomas Adam wrote:
> 2009/2/23 Jesús Guerrero <[email protected]>:
> > #0  0x000000000040d909 in alloc_buttonlist (ub=0x65e360, num=<value
> > optimized out>) at button.c:507
> 
> Well, it seems as the the value of "old" is never assigned to
> anything.  At line 507, we see this:
> 
> for(i=0;i<old;i++) bb[i]=ub->c->buttons[i];
> 
> Hence it's clear that's causing an access violation.
> 
> Does the following work for you?
> 
> Index: modules/FvwmButtons/button.c
> ===================================================================
> RCS file: /home/cvs/fvwm/fvwm/modules/FvwmButtons/button.c,v
> retrieving revision 1.40
> diff -u -r1.40 button.c
> --- modules/FvwmButtons/button.c      22 Feb 2009 21:24:48 -0000      1.40
> +++ modules/FvwmButtons/button.c      23 Feb 2009 11:51:06 -0000
> @@ -489,6 +489,7 @@
>    /* needed to prevent a gcc -O3 bug */
>    volatile int old;
> 
> +  old = ub->c->allocated_buttons;
>    if(num>=ub->c->allocated_buttons)
>    {
>      if(num<old || old>(old+32)) /* test for num<old or for signed overflow */
> 
> I'm not making any more judgements other than that (my analysis could
> be flawed, but it seems odd that "old" is not a volatile int, but
> nothing is seemingly assigned to it.
> 
> Dominik?

Uuh, I accidentally removed this line when fixing the compiler
warning.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt

Reply via email to