diff options
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 37 | 
1 files changed, 22 insertions, 15 deletions
| diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 923aae3..dd50be0 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -511,13 +511,13 @@ VarHashCreateVar(  #define GetNumberFromObj(interp, objPtr, ptrPtr, tPtr) \      ((TclHasInternalRep((objPtr), &tclIntType))					\  	?	(*(tPtr) = TCL_NUMBER_INT,				\ -		*(ptrPtr) = (ClientData)				\ +		*(ptrPtr) = (void *)				\  		    (&((objPtr)->internalRep.wideValue)), TCL_OK) :	\      TclHasInternalRep((objPtr), &tclDoubleType)				\  	?	(((isnan((objPtr)->internalRep.doubleValue))		\  		    ?	(*(tPtr) = TCL_NUMBER_NAN)			\  		    :	(*(tPtr) = TCL_NUMBER_DOUBLE)),			\ -		*(ptrPtr) = (ClientData)				\ +		*(ptrPtr) = (void *)				\  		    (&((objPtr)->internalRep.doubleValue)), TCL_OK) :	\      (((objPtr)->bytes != NULL) && ((objPtr)->length == 0))		\  	? TCL_ERROR :			\ @@ -1348,7 +1348,7 @@ int  Tcl_ExprObj(      Tcl_Interp *interp,		/* Context in which to evaluate the  				 * expression. */ -    Tcl_Obj *objPtr,	/* Points to Tcl object containing expression +    Tcl_Obj *objPtr,		/* Points to Tcl object containing expression  				 * to evaluate. */      Tcl_Obj **resultPtrPtr)	/* Where the Tcl_Obj* that is the expression  				 * result is stored if no errors occur. */ @@ -1494,10 +1494,11 @@ CompileExprObj(  	 * TIP #280: No invoker (yet) - Expression compilation.  	 */ -	const char *string = TclGetString(objPtr); +	int length; +	const char *string = TclGetStringFromObj(objPtr, &length); -	TclInitCompileEnv(interp, &compEnv, string, objPtr->length, NULL, 0); -	TclCompileExpr(interp, string, objPtr->length, &compEnv, 0); +	TclInitCompileEnv(interp, &compEnv, string, length, NULL, 0); +	TclCompileExpr(interp, string, length, &compEnv, 0);  	/*  	 * Successful compilation. If the expression yielded no instructions, @@ -2105,8 +2106,8 @@ TEBCresume(      Tcl_Obj *objPtr, *valuePtr, *value2Ptr, *part1Ptr, *part2Ptr, *tmpPtr;      Tcl_Obj **objv = NULL; -    int objc = 0; -    int opnd, length, pcAdjustment; +    int length, objc = 0; +    int opnd, pcAdjustment;      Var *varPtr, *arrayPtr;  #ifdef TCL_COMPILE_DEBUG      char cmdNameBuf[21]; @@ -3184,7 +3185,8 @@ TEBCresume(       */      { -	int storeFlags, len; +	int storeFlags; +	int len;      case INST_STORE_ARRAY4:  	opnd = TclGetUInt4AtPtr(pc+1); @@ -4660,7 +4662,7 @@ TEBCresume(  	    TRACE_APPEND(("ERROR: \"%.30s\" not on reachable chain\n",  		    O2S(valuePtr))); -	    for (i=contextPtr->index ; i>=0 ; i--) { +	    for (i = contextPtr->index ; i >= 0 ; i--) {  		miPtr = contextPtr->callPtr->chain + i;  		if (miPtr->isFilter  			|| miPtr->mPtr->declaringClassPtr != classPtr) { @@ -4787,7 +4789,11 @@ TEBCresume(  	    Method *const mPtr =  		    contextPtr->callPtr->chain[newDepth].mPtr; -	    return mPtr->typePtr->callProc(mPtr->clientData, interp, +	    if (mPtr->typePtr->version < TCL_OO_METHOD_VERSION_2) { +		return mPtr->typePtr->callProc(mPtr->clientData, interp, +			(Tcl_ObjectContext) contextPtr, opnd, objv); +	    } +	    return ((Tcl_MethodCallProc2 *)(void *)(mPtr->typePtr->callProc))(mPtr->clientData, interp,  		    (Tcl_ObjectContext) contextPtr, opnd, objv);  	} @@ -4829,8 +4835,8 @@ TEBCresume(       */      { -	int index, numIndices, fromIdx, toIdx; -	int nocase, match, length2, cflags, s1len, s2len; +	int numIndices, nocase, match, cflags; +	int length2, fromIdx, toIdx, index, s1len, s2len;  	const char *s1, *s2;      case INST_LIST: @@ -6866,7 +6872,8 @@ TEBCresume(       */      { -	int opnd2, allocateDict, done, i, allocdict; +	int opnd2, allocateDict, done, allocdict; +	int i;  	Tcl_Obj *dictPtr, *statePtr, *keyPtr, *listPtr, *varNamePtr, *keysPtr;  	Tcl_Obj *emptyPtr, **keyPtrPtr;  	Tcl_DictSearch *searchPtr; @@ -10046,7 +10053,7 @@ EvalStatsCmd(  #ifdef TCL_MEM_DEBUG      Tcl_AppendPrintfToObj(objPtr, "\nHeap Statistics:\n"); -    TclDumpMemoryInfo((ClientData) objPtr, 1); +    TclDumpMemoryInfo(objPtr, 1);  #endif      Tcl_AppendPrintfToObj(objPtr, "\n----------------------------------------------------------------\n"); | 
