diff options
| author | dkf <donal.k.fellows@manchester.ac.uk> | 2013-01-04 11:14:59 (GMT) |
|---|---|---|
| committer | dkf <donal.k.fellows@manchester.ac.uk> | 2013-01-04 11:14:59 (GMT) |
| commit | 8ccae052467b3b4ef6a42321289d1a8535c858d5 (patch) | |
| tree | a2ed642c38ff21ba7fd8a3a8b25f0407daa58114 /generic/tclExecute.c | |
| parent | aa5bfc6d5bbe02732c290215d4f69c1f1ce37dda (diff) | |
| parent | 09d1473b3be04898d6ec67abcad0b980fdd88df6 (diff) | |
| download | tcl-8ccae052467b3b4ef6a42321289d1a8535c858d5.zip tcl-8ccae052467b3b4ef6a42321289d1a8535c858d5.tar.gz tcl-8ccae052467b3b4ef6a42321289d1a8535c858d5.tar.bz2 | |
merge trunk
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 9fcc8a5..3635bab 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -1048,6 +1048,7 @@ GrowEvaluationStack( return MEMSTART(markerPtr); } } else { +#ifndef PURIFY Tcl_Obj **tmpMarkerPtr = esPtr->tosPtr + 1; int offset = OFFSET(tmpMarkerPtr); @@ -1064,6 +1065,7 @@ GrowEvaluationStack( *esPtr->markerPtr = (Tcl_Obj *) markerPtr; return memStart; } +#endif } /* @@ -1075,8 +1077,9 @@ GrowEvaluationStack( if (move) { moveWords = esPtr->tosPtr - MEMSTART(markerPtr) + 1; } - needed = growth + moveWords + WALLOCALIGN; + needed = growth + moveWords + WALLOCALIGN - 1; + /* * Check if there is enough room in the next stack (if there is one, it * should be both empty and the last one!) @@ -1106,10 +1109,15 @@ GrowEvaluationStack( * including the elements to be copied over and the new marker. */ +#ifndef PURIFY newElems = 2*currElems; while (needed > newElems) { newElems *= 2; } +#else + newElems = needed; +#endif + newBytes = sizeof(ExecStack) + (newElems-1) * sizeof(Tcl_Obj *); oldPtr = esPtr; @@ -1258,6 +1266,10 @@ TclStackFree( } if (esPtr->prevPtr) { eePtr->execStackPtr = esPtr->prevPtr; +#ifdef PURIFY + eePtr->execStackPtr->nextPtr = NULL; + DeleteExecStack(esPtr); +#endif } else { eePtr->execStackPtr = esPtr; } |
