summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordgp <dgp@noemail.net>2011-05-02 20:13:20 (GMT)
committerdgp <dgp@noemail.net>2011-05-02 20:13:20 (GMT)
commit49284e27b4d8cdd7030d4355a6c1913bc9051209 (patch)
tree1359629d1145220aa313147065ecc562f2675afb /generic
parent47f60f00200a2ff7de5ccf99fb5022896f02c359 (diff)
parent6f180594f549428ddea3be496026ecc938c99ad4 (diff)
downloadtcl-49284e27b4d8cdd7030d4355a6c1913bc9051209.zip
tcl-49284e27b4d8cdd7030d4355a6c1913bc9051209.tar.gz
tcl-49284e27b4d8cdd7030d4355a6c1913bc9051209.tar.bz2
Tests for expanded literals quoting detection.
FossilOrigin-Name: 8e716527445883b929b6170c90c2722a0d0a6c46
Diffstat (limited to 'generic')
-rw-r--r--generic/tclParse.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/generic/tclParse.c b/generic/tclParse.c
index c8d2012..96c2a10 100644
--- a/generic/tclParse.c
+++ b/generic/tclParse.c
@@ -496,6 +496,7 @@ Tcl_ParseCommand(
* tokens representing the expanded list.
*/
+ CONST char *listStart;
int growthNeeded = wordIndex + 2*elemCount
- parsePtr->numTokens;
parsePtr->numWords += elemCount - 1;
@@ -514,7 +515,7 @@ Tcl_ParseCommand(
* word value.
*/
- nextElem = tokenPtr[1].start;
+ listStart = nextElem = tokenPtr[1].start;
while (nextElem < listEnd) {
int quoted;
@@ -528,8 +529,9 @@ Tcl_ParseCommand(
&(tokenPtr->start), &nextElem,
&(tokenPtr->size), NULL);
- quoted = tokenPtr->start[-1] == '{'
- || tokenPtr->start[-1] == '"';
+ quoted = (tokenPtr->start[-1] == '{'
+ || tokenPtr->start[-1] == '"')
+ && tokenPtr->start > listStart;
tokenPtr[-1].start = tokenPtr->start - quoted;
tokenPtr[-1].size = tokenPtr->start + tokenPtr->size
- tokenPtr[-1].start + quoted;