El Lun, 23 de Febrero de 2009, 22:07, Dominik Vogt escribió:
> On Mon, Feb 23, 2009 at 11:55:43AM +0000, Thomas Adam wrote:
>
>> 2009/2/23 Jesús Guerrero <i92gu...@terra.es>:
>>
>>> #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.

That explains it. Thanks Thomas and Dominik for your time.
Case solved :)

-- 
Jesús Guerrero


Reply via email to