diff options
author | dgp <dgp@users.sourceforge.net> | 2013-07-18 15:42:54 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2013-07-18 15:42:54 (GMT) |
commit | 2aed1acbd1bd855bbee0a630877ba16b50c84d58 (patch) | |
tree | 10b1fe79c403e17da470df6f8eb602fc0b7c1a7d | |
parent | c2d6c48dd921e7120d626f1a85977ae130dd109e (diff) | |
parent | 81a1a91361cc615d3e9bf5b9016bd12cd258aa8d (diff) | |
download | tcl-2aed1acbd1bd855bbee0a630877ba16b50c84d58.zip tcl-2aed1acbd1bd855bbee0a630877ba16b50c84d58.tar.gz tcl-2aed1acbd1bd855bbee0a630877ba16b50c84d58.tar.bz2 |
merge trunk
-rw-r--r-- | generic/tclAssembly.c | 15 | ||||
-rw-r--r-- | generic/tclBasic.c | 5 | ||||
-rw-r--r-- | generic/tclCompile.c | 6 | ||||
-rw-r--r-- | tests/assemble.test | 3 |
4 files changed, 14 insertions, 15 deletions
diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c index 1a061f0..0722eb9 100644 --- a/generic/tclAssembly.c +++ b/generic/tclAssembly.c @@ -1013,8 +1013,6 @@ TclAssembleCode( const char* instPtr = codePtr; /* Where to start looking for a line of code */ - int instLen; /* Length in bytes of the current line of - * code */ const char* nextPtr; /* Pointer to the end of the line of code */ int bytesLeft = codeLen; /* Number of bytes of source code remaining to * be parsed */ @@ -1028,10 +1026,6 @@ TclAssembleCode( */ status = Tcl_ParseCommand(interp, instPtr, bytesLeft, 0, parsePtr); - instLen = parsePtr->commandSize; - if (parsePtr->term == parsePtr->commandStart + instLen - 1) { - --instLen; - } /* * Report errors in the parse. @@ -1040,7 +1034,7 @@ TclAssembleCode( if (status != TCL_OK) { if (flags & TCL_EVAL_DIRECT) { Tcl_LogCommandInfo(interp, codePtr, parsePtr->commandStart, - instLen); + parsePtr->term + 1 - parsePtr->commandStart); } FreeAssemblyEnv(assemEnvPtr); return TCL_ERROR; @@ -1060,6 +1054,13 @@ TclAssembleCode( */ if (parsePtr->numWords > 0) { + int instLen = parsePtr->commandSize; + /* Length in bytes of the current command */ + + if (parsePtr->term == parsePtr->commandStart + instLen - 1) { + --instLen; + } + /* * If tracing, show each line assembled as it happens. */ diff --git a/generic/tclBasic.c b/generic/tclBasic.c index bd4f157..82affb0 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -5082,7 +5082,9 @@ TclEvalEx( do { if (Tcl_ParseCommand(interp, p, bytesLeft, 0, parsePtr) != TCL_OK) { code = TCL_ERROR; - goto error; + Tcl_LogCommandInfo(interp, script, parsePtr->commandStart, + parsePtr->term + 1 - parsePtr->commandStart); + goto posterror; } /* @@ -5338,6 +5340,7 @@ TclEvalEx( Tcl_LogCommandInfo(interp, script, parsePtr->commandStart, commandLength); } + posterror: iPtr->flags &= ~ERR_ALREADY_LOGGED; /* diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 763e8f1..a52ad3e 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -2109,7 +2109,6 @@ TclCompileScript( Tcl_LogCommandInfo(interp, script, parse.commandStart, parse.term + 1 - parse.commandStart); TclCompileSyntaxError(interp, envPtr); - Tcl_FreeParse(&parse); return; } @@ -2242,10 +2241,7 @@ TclCompileScript( */ Tcl_LogCommandInfo(interp, script, parsePtr->commandStart, - /* Drop the command terminator (";","]") if appropriate */ - (parsePtr->term == - parsePtr->commandStart + parsePtr->commandSize - 1)? - parsePtr->commandSize - 1 : parsePtr->commandSize); + parsePtr->term + 1 - parsePtr->commandStart); TclCompileSyntaxError(interp, envPtr); break; } diff --git a/tests/assemble.test b/tests/assemble.test index 7d4e5d1..b0487e6 100644 --- a/tests/assemble.test +++ b/tests/assemble.test @@ -175,8 +175,7 @@ test assemble-4.1 {syntax error} { -match glob -result {1 {extra characters after close-brace} {extra characters after close-brace while executing -"{}extra - " +"{}e" ("assemble" body, line 2)*}} } test assemble-4.2 {null command} { |