diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-09-16 09:44:09 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:52 +1000 |
commit | 2f28a3cc9b01b61206c94f09f8ad1a59caaf7077 (patch) | |
tree | e4376ecc39b124fb65d5c97d9c97ea2e7e1b95e9 | |
parent | dbbd3ddbdbf2849591a911e6f3c0919d1e42072a (diff) | |
download | jimtcl-2f28a3cc9b01b61206c94f09f8ad1a59caaf7077.zip jimtcl-2f28a3cc9b01b61206c94f09f8ad1a59caaf7077.tar.gz jimtcl-2f28a3cc9b01b61206c94f09f8ad1a59caaf7077.tar.bz2 |
Fix a crash during list parsing
If the list ended in a trailing newline
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim.c | 7 | ||||
-rw-r--r-- | regtest.tcl | 6 |
2 files changed, 12 insertions, 1 deletions
@@ -1714,8 +1714,13 @@ int JimParseListStr(struct JimParserCtx *pc) } switch (*pc->p) { case '\\': + if (--pc->len == 0) { + /* Trailing newline */ + pc->tt = JIM_TT_ESC; + pc->tend = pc->p; + return JIM_OK; + } pc->p++; - pc->len--; break; case ' ': case '\t': diff --git a/regtest.tcl b/regtest.tcl index 09b193e..16b691e 100644 --- a/regtest.tcl +++ b/regtest.tcl @@ -80,6 +80,12 @@ set a b[ref value "tag name"] getref [string range $a 1 end] puts "TEST 12 PASSED" +# REGTEST 13 +# 14 Sep 2010 - parse list with trailing backslash +set x "switch -0 \$on \\" +lindex $x 1 +puts "TEST 13 PASSED" + # TAKE THE FOLLOWING puts AS LAST LINE puts "--- ALL TESTS PASSED ---" |