CRN@BYUVM.BITNET (07/31/90)
I am having a VERY weird problem in TurboC. My code looks something like this: typedef struct{ . . . char *str; int type; }FIELD; int proc(FIELD *fld) { . . . if(!valid_str(fld->str)) return ERROR; . . . } Here's the weird part. Using Turbo Debugger I have found that my program crashes right after this statement. I perform a watch on fld, fld->str, fld->type. Before the call to valid_str() all of the variables are fine. Upon return from valid_str(), however, the pointer, fld, is screwed up which of course in turn screws up fld->str and fld->type. I assume that fld is being overwritten somehow but I can't figure out how. Valid_str() does nothing to manipulate fld and the only function that valid_str() calls is atoi() (yes, I do include stdlib.h). If anyone has any pointers for me I'd sure appreciate hearing them. -- Cory (crn@byuvm.bitnet)
brianr@hpdmd48.boi.hp.com (Brian Rodriguez) (08/15/90)
/ hpdmd48:comp.lang.c / CRN@BYUVM.BITNET / 10:35 am Jul 31, 1990 / I once had a similarly mysterious experience with TurboC. Are you using any static or global arrays inside valid_str()? If so, you may be writing past the array bounds, and if by chance fld is stored immediately after the array, it will be overwritten during the valid_str() call. If the situation I have described does not exist, I wish you luck. --- Brian Rodriguez (brianr@hpbs1526.boi.hp.com)