diff options
Diffstat (limited to 'generic/tclParse.c')
| -rw-r--r-- | generic/tclParse.c | 17 | 
1 files changed, 8 insertions, 9 deletions
| diff --git a/generic/tclParse.c b/generic/tclParse.c index 309e232..ee0d4c4 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -15,6 +15,7 @@  #include "tclInt.h"  #include "tclParse.h" +#include <assert.h>  /*   * The following table provides parsing information about each possible 8-bit @@ -42,7 +43,7 @@   * TYPE_BRACE -		Character is a curly brace (either left or right).   */ -const char charTypeTable[] = { +const char tclCharTypeTable[] = {      /*       * Negative character values, from -128 to -1:       */ @@ -1567,6 +1568,7 @@ Tcl_ParseVar(      code = TclSubstTokens(interp, parsePtr->tokenPtr, parsePtr->numTokens,  	    NULL, 1, NULL, NULL); +    Tcl_FreeParse(parsePtr);      TclStackFree(interp, parsePtr);      if (code != TCL_OK) {  	return NULL; @@ -1577,16 +1579,13 @@ Tcl_ParseVar(       * At this point we should have an object containing the value of a       * variable. Just return the string from that object.       * -     * This should have returned the object for the user to manage, but -     * instead we have some weak reference to the string value in the object, -     * which is why we make sure the object exists after resetting the result. -     * This isn't ideal, but it's the best we can do with the current -     * documented interface. -- hobbs +     * Since TclSubstTokens above returned TCL_OK, we know that objPtr +     * is shared.  It is in both the interp result and the value of the +     * variable.  Returning the string relies on that to be true.       */ -    if (!Tcl_IsShared(objPtr)) { -	Tcl_IncrRefCount(objPtr); -    } +    assert( Tcl_IsShared(objPtr) ); +      Tcl_ResetResult(interp);      return TclGetString(objPtr);  } | 
