Hi All,
My application has a form with several field objects in it. I have limited the no. of chars to be
entered for each field to 5 chars.User enters some data
in the field and when he navigates to form "B", all the user input data are stored in a structure variable.
When he returns to this Form 'A', I read the saved data and display them back to the user.
I am testing my PDA application on Emulator with Palm OS 4.1.2. While running the Gremlins , it crashes saying
"XYZ application called sysFatalAlert with the message : Field.c , Line 264, Invalid word wrapping info".
If I press the continue button when the crash happens, it says
"XYZ application called sysFatalAlert with the message : Field.c, Line 195, Text block size small than text."
If I again press the continue button, it complains saying
"XYZ application just read from memory location 0xBD700001, causing a bus error. A bus error.......":
When I look at the stack window, I noticed that the last 4 events at the time of crashing are
"LinkToolFormHandleEvent,
FldGetTextPtr,
FldGetTextPtr,
ValidateField"
Unforunately I don't know the assembly code to debug in detail.
Does anybody know what does these error means and how to debug this problem.
I have enclosed part of my code just incase somebody is interested.
static FieldPtr fld1 = NULL; //global variable
void LinkInputParaForm1Init() {
static UInt8 linkToolDataCleared_u8 = 0;
MemHandle txtH[13], oldHandle;
Err err, errFreeMem;
//Pointer to Form.
FormPtr frmP;
UInt16 butID;
char* p = NULL;
frmP = FrmGetActiveForm();
// Draw the LinkTool Input form.
FrmDrawForm(frmP);
//First time, the user has launched the link tool. Reset all the concerned variables.
if(linkToolDataCleared_u8 == 0 ) {
//reset all the variables in the link tool data structure.
MemSet((void*)&LinkToolInputData_st, sizeof(LinkToolInputData_st), 0);
MemSet((void*)&lat1_st, sizeof(lat1_st), 0);
MemSet((void*)&lon1_st, sizeof(lon1_st), 0);
MemSet((void*)&lat2_st, sizeof(lat2_st), 0);
MemSet((void*)&lon2_st, sizeof(lon2_st), 0);
LinkToolInputData_st.units_arr_10[0] = NULL;
LinkToolInputData_st.distMethod_arr_30[0] = NULL;
MemSet(dataEntered_u8, sizeof(dataEntered_u8), 0);
//set this flag so that you dont reset the variables every time this page is opened up.
linkToolDataCleared_u8 = 1;
}
//If the user has made the selection, display the selected values on the screen.
if((LinkToolInputData_st.dstMethod_e == Direct) && fld1) {
txtH[0] = MemHandleNew(sizeof(LinkToolInputData_st.siteSep_arr_15) + 5);
//If successful in getting handle to the new chunk, proceed.
if(txtH[0]) {
p = (char *)MemHandleLock(txtH[0]);
if(p) {
StrCopy(p, LinkToolInputData_st.siteSep_arr_15); // you'd copy from saved data, presumably
err = MemHandleUnlock(txtH[0]);
ErrFatalDisplayIf(err, "Could not Unlock Chunk.");
}//end if
fld1 = (FieldType *)FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, LinkToolInputPara1SiteSepField));
oldHandle = FldGetTextHandle(fld1);
// ErrFatalDisplayIf(!oldHandle, "Couldn't get Text Handle");
FldSetTextHandle(fld1, txtH[0]);
FldDrawField (fld1); //draws the contents of the field.
if (oldHandle) {
errFreeMem = MemHandleFree(oldHandle); // or do something else with it first
ErrFatalDisplayIf(errFreeMem, "Could not Free Handle.");
}//end if
} //end if
}
Thanks in advance for any help.
Cheers,
Anamika
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/support/forums/
opensubscriber is not affiliated with the authors of this message nor responsible for its content.