Index: TODO =================================================================== diff -u -r30e93c21e2be453a9e192b270844d86e04378c45 -r763c2f93238655742da05c5bb5c8d254d704b945 --- TODO (.../TODO) (revision 30e93c21e2be453a9e192b270844d86e04378c45) +++ TODO (.../TODO) (revision 763c2f93238655742da05c5bb5c8d254d704b945) @@ -1691,7 +1691,7 @@ - removed obsolete entries from generic/nsf.decls und generic/nsfInt.decls - removed NSF_CMD_NOT_FOUND -- fix one aliasing warning for gcc 4.4.4 +- fixed aliasing warning for gcc 4.4.4 TODO: Index: generic/nsf.c =================================================================== diff -u -r14965323980c2235c37b67ddbb19343ddbdaa41c -r763c2f93238655742da05c5bb5c8d254d704b945 --- generic/nsf.c (.../nsf.c) (revision 14965323980c2235c37b67ddbb19343ddbdaa41c) +++ generic/nsf.c (.../nsf.c) (revision 763c2f93238655742da05c5bb5c8d254d704b945) @@ -2482,7 +2482,7 @@ */ static Var * NSRequireVariableOnObj(Tcl_Interp *interp, NsfObject *object, CONST char *name, int flgs) { - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Var *varPtr, *arrayPtr; Nsf_PushFrameObj(interp, object, framePtr); @@ -2864,7 +2864,7 @@ char *valueString, *c; Tcl_Obj *valueObj, *result = NULL, *savedResult = NULL; int flgs = TCL_LEAVE_ERR_MSG; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, object, framePtr); if (object->nsPtr) @@ -3463,7 +3463,7 @@ } if (!comment) { - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, object, framePtr); /* don't check assertion during assertion check */ @@ -4797,7 +4797,7 @@ if (guardObj) { Tcl_Obj *res = Tcl_GetObjResult(interp); /* save the result */ - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; INCR_REF_COUNT(res); @@ -5540,7 +5540,7 @@ Nsf_ObjSetVar2(Nsf_Object *object, Tcl_Interp *interp, Tcl_Obj *name1, Tcl_Obj *name2, Tcl_Obj *valueObj, int flgs) { Tcl_Obj *result; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, (NsfObject*)object, framePtr); if (((NsfObject*)object)->nsPtr) @@ -5555,7 +5555,7 @@ Nsf_SetVar2Ex(Nsf_Object *object, Tcl_Interp *interp, CONST char *name1, CONST char *name2, Tcl_Obj *valueObj, int flgs) { Tcl_Obj *result; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, (NsfObject*)object, framePtr); if (((NsfObject*)object)->nsPtr) @@ -5577,7 +5577,7 @@ Nsf_ObjGetVar2(Nsf_Object *object, Tcl_Interp *interp, Tcl_Obj *name1, Tcl_Obj *name2, int flgs) { Tcl_Obj *result; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, (NsfObject*)object, framePtr); if (((NsfObject*)object)->nsPtr) @@ -5593,7 +5593,7 @@ Nsf_GetVar2Ex(Nsf_Object *object, Tcl_Interp *interp, CONST char *name1, CONST char *name2, int flgs) { Tcl_Obj *result; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, (NsfObject*)object, framePtr); if (((NsfObject*)object)->nsPtr) @@ -5653,7 +5653,7 @@ static int VarExists(Tcl_Interp *interp, NsfObject *object, CONST char *varName, CONST char *index, int triggerTrace, int requireDefined) { - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Var *varPtr, *arrayPtr; int result; int flags = 0; @@ -6321,7 +6321,7 @@ CmdMethodDispatch(ClientData cp, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], CONST char *methodName, NsfObject *object, Tcl_Command cmdPtr, NsfCallStackContent *cscPtr) { - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; CheckOptions co; int result; @@ -6464,12 +6464,12 @@ * The client data cp is still the obj of the called method */ if (objc < 2) { - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameCsc(interp, cscPtr, framePtr); result = DispatchDefaultMethod(cp, interp, objc, objv, NSF_CSC_IMMEDIATE); Nsf_PopFrameCsc(interp, framePtr); } else { - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; NsfObject *self = (NsfObject *)cp; char *methodName = ObjStr(objv[1]); @@ -9905,7 +9905,7 @@ int flgs) { NsfObject *object = (NsfObject *) object1; int result; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, object, framePtr); if (object->nsPtr) @@ -9922,7 +9922,7 @@ Var *varPtr = NULL, *otherPtr = NULL, *arrayPtr; int new = 0, flgs = TCL_LEAVE_ERR_MSG; Tcl_CallFrame *varFramePtr; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; char *varNameString; if (CheckVarName(interp, ObjStr(varName)) != TCL_OK) { @@ -10110,7 +10110,7 @@ SetInstVar(Tcl_Interp *interp, NsfObject *object, Tcl_Obj *nameObj, Tcl_Obj *valueObj) { Tcl_Obj *result; int flags = (object->nsPtr) ? TCL_LEAVE_ERR_MSG|TCL_NAMESPACE_ONLY : TCL_LEAVE_ERR_MSG; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; Nsf_PushFrameObj(interp, object, framePtr); if (valueObj == NULL) { @@ -10374,7 +10374,7 @@ ClientData clientData; int result; NsfObject *object = tcd->object; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; if (tcd->verbose) { Tcl_Obj *cmd = Tcl_NewListObj(objc, objv); @@ -10613,7 +10613,7 @@ NsfObjscopedMethod(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { AliasCmdClientData *tcd = (AliasCmdClientData *)clientData; NsfObject *object = tcd->object; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; int result; /*fprintf(stderr, "objscopedMethod obj=%p %s, ptr=%p\n", object, objectName(object), tcd->objProc);*/ @@ -12591,7 +12591,7 @@ if (*methodName == ':') { Tcl_Command cmd, importedCmd; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; /* * We have an absolute name. We assume, the name is the name of a @@ -14214,7 +14214,7 @@ NsfParamDefs *paramDefs; Tcl_Obj *newValue; ParseContext pc; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; #if 0 fprintf(stderr, "NsfOConfigureMethod %s %d ",objectName(object), objc); @@ -14292,7 +14292,7 @@ if (paramPtr->flags & (NSF_ARG_INITCMD|NSF_ARG_METHOD)) { CallFrame *varFramePtr = Tcl_Interp_varFramePtr(interp); NsfCallStackContent csc, *cscPtr = &csc; - Tcl_CallFrame frame2, *framePtr2 = &frame2; + CallFrame frame2, *framePtr2 = &frame2; /* The current callframe of configure uses an objscope, such that setvar etc. are able to access variables like "a" as a @@ -14732,7 +14732,7 @@ NsfOVwaitMethod(Tcl_Interp *interp, NsfObject *object, CONST char *varname) { int done, foundEvent; int flgs = TCL_TRACE_WRITES|TCL_TRACE_UNSETS; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; /* * Make sure the var table exists and the varname is in there @@ -15997,7 +15997,7 @@ NsfParamDefs *paramDefs, CONST char *methodName, int objc, Tcl_Obj *CONST objv[]) { int result; - Tcl_CallFrame frame, *framePtr = &frame; + CallFrame frame, *framePtr = &frame; if (object && pushFrame) { Nsf_PushFrameObj(interp, object, framePtr); Index: generic/nsfStack.c =================================================================== diff -u -r30e93c21e2be453a9e192b270844d86e04378c45 -r763c2f93238655742da05c5bb5c8d254d704b945 --- generic/nsfStack.c (.../nsfStack.c) (revision 30e93c21e2be453a9e192b270844d86e04378c45) +++ generic/nsfStack.c (.../nsfStack.c) (revision 763c2f93238655742da05c5bb5c8d254d704b945) @@ -80,14 +80,14 @@ *---------------------------------------------------------------------- */ -static void Nsf_PushFrameObj(Tcl_Interp *interp, NsfObject *object, Tcl_CallFrame *framePtr) { +static void Nsf_PushFrameObj(Tcl_Interp *interp, NsfObject *object, CallFrame *framePtr) { /*fprintf(stderr,"PUSH OBJECT_FRAME (Nsf_PushFrameObj) frame %p\n",framePtr);*/ if (object->nsPtr) { - Tcl_PushCallFrame(interp, framePtr, object->nsPtr, + Tcl_PushCallFrame(interp, (Tcl_CallFrame *)framePtr, object->nsPtr, 0|FRAME_IS_NSF_OBJECT); } else { /* The object has no nsPtr, so we diguise as a proc, using fakeProc */ - Tcl_PushCallFrame(interp, framePtr, Tcl_CallFrame_nsPtr(Tcl_Interp_varFramePtr(interp)), + Tcl_PushCallFrame(interp, (Tcl_CallFrame *)framePtr, Tcl_CallFrame_nsPtr(Tcl_Interp_varFramePtr(interp)), 1|FRAME_IS_NSF_OBJECT); Tcl_CallFrame_procPtr(framePtr) = &RUNTIME_STATE(interp)->fakeProc; @@ -99,17 +99,12 @@ Tcl_CallFrame_clientData(framePtr) = (ClientData)object; } -static void Nsf_PopFrameObj(Tcl_Interp *interp, Tcl_CallFrame *framePtr) { +static void Nsf_PopFrameObj(Tcl_Interp *interp, CallFrame *framePtr) { /*fprintf(stderr,"POP OBJECT_FRAME (Nsf_PopFrameObj) frame %p, vartable %p set to NULL, already %d\n", framePtr, Tcl_CallFrame_varTablePtr(framePtr), Tcl_CallFrame_varTablePtr(framePtr) == NULL);*/ - /* gcc 4.4.4 strict-aliasing rule does not like - Tcl_CallFrame_varTablePtr(framePtr) = NULL; - */ - CallFrame *callFrame = (CallFrame *)framePtr; - callFrame->varTablePtr = NULL; - + Tcl_CallFrame_varTablePtr(framePtr) = NULL; Tcl_PopCallFrame(interp); } @@ -130,19 +125,19 @@ */ static void -Nsf_PushFrameCsc(Tcl_Interp *interp, NsfCallStackContent *cscPtr, Tcl_CallFrame *framePtr) { +Nsf_PushFrameCsc(Tcl_Interp *interp, NsfCallStackContent *cscPtr, CallFrame *framePtr) { CallFrame *varFramePtr = Tcl_Interp_varFramePtr(interp); /*fprintf(stderr,"PUSH CMETHOD_FRAME (Nsf_PushFrameCsc) frame %p cscPtr %p methodName %s\n", framePtr, cscPtr, Tcl_GetCommandName(interp,cscPtr->cmdPtr));*/ - Tcl_PushCallFrame(interp, framePtr, Tcl_CallFrame_nsPtr(varFramePtr), + Tcl_PushCallFrame(interp, (Tcl_CallFrame *)framePtr, Tcl_CallFrame_nsPtr(varFramePtr), 1|FRAME_IS_NSF_CMETHOD); Tcl_CallFrame_clientData(framePtr) = (ClientData)cscPtr; Tcl_CallFrame_procPtr(framePtr) = &RUNTIME_STATE(interp)->fakeProc; } static void -Nsf_PopFrameCsc(Tcl_Interp *interp, Tcl_CallFrame *framePtr) { +Nsf_PopFrameCsc(Tcl_Interp *interp, CallFrame *framePtr) { /*fprintf(stderr,"POP CMETHOD_FRAME (Nsf_PopFrameCsc) frame %p, varTablePtr = %p\n", framePtr, Tcl_CallFrame_varTablePtr(framePtr));*/ Tcl_PopCallFrame(interp);