diff options
author | dgp <dgp@users.sourceforge.net> | 2017-02-27 14:51:15 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2017-02-27 14:51:15 (GMT) |
commit | 30c48b68df1a2ca2ac5db9140ad82d7c314c6b6e (patch) | |
tree | f0d20852ef89759b1637c961ecfdbb7e07222839 /generic/tclParse.c | |
parent | 67b6b8b92cb4b5fa7e0d9765f7cf16cd5578fef7 (diff) | |
download | tcl-30c48b68df1a2ca2ac5db9140ad82d7c314c6b6e.zip tcl-30c48b68df1a2ca2ac5db9140ad82d7c314c6b6e.tar.gz tcl-30c48b68df1a2ca2ac5db9140ad82d7c314c6b6e.tar.bz2 |
ParseTokens failed to fully respect its numBytes argument.
Diffstat (limited to 'generic/tclParse.c')
-rw-r--r-- | generic/tclParse.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/generic/tclParse.c b/generic/tclParse.c index b40b636..6f989d9 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -1190,6 +1190,8 @@ ParseTokens( nestedPtr = (Tcl_Parse *) TclStackAlloc(parsePtr->interp, sizeof(Tcl_Parse)); while (1) { + const char *curEnd; + if (Tcl_ParseCommand(parsePtr->interp, src, numBytes, 1, nestedPtr) != TCL_OK) { parsePtr->errorType = nestedPtr->errorType; @@ -1198,8 +1200,9 @@ ParseTokens( TclStackFree(parsePtr->interp, nestedPtr); return TCL_ERROR; } + curEnd = src + numBytes; src = nestedPtr->commandStart + nestedPtr->commandSize; - numBytes = parsePtr->end - src; + numBytes = curEnd - src; Tcl_FreeParse(nestedPtr); /* |