Ian,
I am using Debian  based Knoppix with kernel 2.6.9 and gcc 4.2.1. I've been 
trying to strip out as much as the code while still leaving the error inside. 
Basically, If I call an myslider->value(1), the Fl_Valuator (the class from 
which the Fl_slider is derived) simply stores another value. In the 
code::blocks watch window, I put a myslider->value() while stepping into 
myslider->value(1) and checking the dissasembly.

int Fl_Valuator::value(double v) {
  clear_changed();
  if (v == value_) return 0;
  value_ = v;      /*goes bad here*/
.  value_damage();
  return 1;
}

Dissassembly gives for the value_=v line:
mov eax, dword ptr[ebp+8] /* set up address for value that will be offseted by 
68*/
fld qword ptr [ebp-8]   /*float point load from pointer*/
fstp qword ptr[eax+68] /*float point store at pointer*/

The [ebp-8] is the input argument v.

When fstp qword ptr[eax+68] is run, the gdb watch immediately gives the new 
wrong value for myslider->value().

The gdb in code blocks doesn't let me inspect the memory. I try putting 
variations of *(hex addresss) but it does not work.

I'll put another post when I can isolate the code with the bug, because right 
now if I put only the minimum section with the problem, it works well.
Frank
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to