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