The following code: fwsUniChar c; fwsUniChar *temp; temp=p->inPtr; c = *temp; temp++; p->inPtr = temp; correctly increments the pointer p by 0x01 instead of fwsUniChar c = p->inPtr++; which incorrectly increments the pointer p by 0x101 This code compiles and runs correctly with ANSI C compilers Also routine1() reentrant { enum ElementTagType type; routine2(&type); } routine2(enum ElementTagType *type) { type = START_TAG; } does not work (i.e. type in routine1 is not set to START_TAG after calling routine 2. There is a default XBPSTACK Any Ideas Thanks Barry
"When I use the original code the pointer changes from 0x01748f to 0x17590 and the program fails." You might try inspecting the assembly code/listing looking to see whether 257 is added to the pointer "all at once" or is spread out more (e.g., pointer incremented by one, then 256 added to it elsewhere). That might help point us in the right direction.