aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2012-02-28 10:52:41 +1000
committerSteve Bennett <steveb@workware.net.au>2012-02-28 10:52:41 +1000
commit24d2bf6e60b45392b28a709193169bb105c81a4e (patch)
treef0e2dae043130ac5490290f99fd41fded23d7d9c
parent4c0159ba17f8b34819a4bbdf6dd3347d8c86d548 (diff)
downloadjimtcl-24d2bf6e60b45392b28a709193169bb105c81a4e.zip
jimtcl-24d2bf6e60b45392b28a709193169bb105c81a4e.tar.gz
jimtcl-24d2bf6e60b45392b28a709193169bb105c81a4e.tar.bz2
Short circuit converting empty string to list
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/jim.c b/jim.c
index 8a80a50..0931fa8 100644
--- a/jim.c
+++ b/jim.c
@@ -6130,16 +6130,18 @@ static int SetListFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr)
objPtr->internalRep.listValue.ele = NULL;
/* Convert into a list */
- JimParserInit(&parser, str, strLen, linenr);
- while (!parser.eof) {
- Jim_Obj *elementPtr;
+ if (strLen) {
+ JimParserInit(&parser, str, strLen, linenr);
+ while (!parser.eof) {
+ Jim_Obj *elementPtr;
- JimParseList(&parser);
- if (parser.tt != JIM_TT_STR && parser.tt != JIM_TT_ESC)
- continue;
- elementPtr = JimParserGetTokenObj(interp, &parser);
- JimSetSourceInfo(interp, elementPtr, fileNameObj, parser.tline);
- ListAppendElement(objPtr, elementPtr);
+ JimParseList(&parser);
+ if (parser.tt != JIM_TT_STR && parser.tt != JIM_TT_ESC)
+ continue;
+ elementPtr = JimParserGetTokenObj(interp, &parser);
+ JimSetSourceInfo(interp, elementPtr, fileNameObj, parser.tline);
+ ListAppendElement(objPtr, elementPtr);
+ }
}
Jim_DecrRefCount(interp, fileNameObj);
return JIM_OK;