>I have tested my app as a PalmIIIx using Bebug Rom 3.0. Every
>thing tests ok.
That's surprising; Palm OS 3.0 didn't support the Palm IIIx device :-)
Different processor. But anyway...
>1) Field.c, Line: 123, Invalid insertion point position.
That'd be shown if the field's insertion point position (line number) was
greater than the number of lines visible on the field. If you'd recently
been changing the field's contents, perhaps that isn't being done
correctly. Otherwise, I'd suspect that you're overwriting the field's data
structures... perhaps you're copying text into a label which isn't long
enough, or have an uninitialized variable, or something like that.
>2) Field.c, Line: 136, Invalid Field Length.
This fires if StrLen(fld->text) != fld->textLen. Are you sure the string
is null terminated? Or are you changing the text directly without calling
FldSetTextPtr or something similar so that the field knows that you've been
changing its data? Use the debugger to look at the memory to find out for
sure what's going on. Or it could be memory corruption again.
>First, would either of these two cause a Fatal Error on a palm using
>OS 3.3...
Yes, they both will.
>Second, why is this an error in 3.3 but not in 3.0? Cause?
Uninitialized memory is semi-random: you might have been getting lucky and
having a zero byte at the right place before. That's a very common cause
for things like this, and a shortcoming of the C language in general... it
doesn't give you much help for these easy-to-create glitches.
On the other hand, the newer versions of Pose are pretty darn good at
catching many of these things, though not all. Seems like yours might be
the kind that would be very expensive for Pose to find for you.
-David Fedor
Palm Developer Support