Hi, encountering strange results, I'm unsure whether this code is affected by strict-aliasing rules: static void *CreateRes(PrexecTresource eRes, void *pvVal) { switch(eRes) { case PrexecNprintCommand: case PrexecNoptHost: case PrexecNoptHostString: case PrexecNoptDest: case PrexecNoptDestString: case PrexecNoptFileString: if (pvVal != NULL) { pvVal = (void*)strdup((char*)pvVal); } break; default: break; } return pvVal; } Specifically the casts around the 'strdup'... Thanks, /haubi/