diff options
author | Steve Bennett <steveb@workware.net.au> | 2012-02-28 10:52:41 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2012-02-28 10:52:41 +1000 |
commit | 24d2bf6e60b45392b28a709193169bb105c81a4e (patch) | |
tree | f0e2dae043130ac5490290f99fd41fded23d7d9c | |
parent | 4c0159ba17f8b34819a4bbdf6dd3347d8c86d548 (diff) | |
download | jimtcl-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.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -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; |