From 2f5f6f266e2393a8351790c61de57b7d42f710ab Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Tue, 28 Sep 2010 07:34:52 +1000 Subject: Minor cleanups and fixes array get for odd length list now returns an error comment fixes and small code rearrangement Signed-off-by: Steve Bennett --- jim-array.c | 11 ++++++----- jim-eventloop.c | 9 --------- jim.c | 26 ++++++++++++-------------- 3 files changed, 18 insertions(+), 28 deletions(-) diff --git a/jim-array.c b/jim-array.c index d077cc8..26febb3 100644 --- a/jim-array.c +++ b/jim-array.c @@ -81,11 +81,12 @@ static int array_cmd_get(Jim_Interp *interp, int argc, Jim_Obj *const *argv) all = 1; } - /* If it is a dictionary or list, nothing else to do */ - if (all && (Jim_IsDict(objPtr) || Jim_IsList(objPtr))) { - /* XXX If it is a odd-length list no error will be returned */ - Jim_SetResult(interp, objPtr); - return JIM_OK; + /* If it is a dictionary or list with an even number of elements, nothing else to do */ + if (all) { + if (Jim_IsDict(objPtr) || (Jim_IsList(objPtr) && Jim_ListLength(interp, objPtr) % 2 == 0)) { + Jim_SetResult(interp, objPtr); + return JIM_OK; + } } if (Jim_DictKeysVector(interp, objPtr, NULL, 0, &dictObj, JIM_ERRMSG) != JIM_OK) { diff --git a/jim-eventloop.c b/jim-eventloop.c index 992b607..3256536 100644 --- a/jim-eventloop.c +++ b/jim-eventloop.c @@ -40,13 +40,6 @@ * official policies, either expressed or implied, of the Jim Tcl Project. **/ -/* TODO: - * - * - to really use flags in Jim_ProcessEvents() - * - more complete [after] command with [after info] and other subcommands. - * - Win32 port - */ - #include "jim.h" #include "jim-eventloop.h" @@ -172,8 +165,6 @@ void Jim_DeleteFileHandler(Jim_Interp *interp, FILE * handle) } } -/* That's another part of this extension that needs to be ported - * to WIN32. */ static void JimGetTime(long *seconds, long *milliseconds) { struct timeval tv; diff --git a/jim.c b/jim.c index 1058a14..598ac3f 100644 --- a/jim.c +++ b/jim.c @@ -4903,11 +4903,6 @@ static void JimSetStackTrace(Jim_Interp *interp, Jim_Obj *stackTraceObj) static void JimAppendStackTrace(Jim_Interp *interp, const char *procname, const char *filename, int linenr) { -#if 0 - printf("JimAppendStackTrace: %s:%d (%s)\n", filename, linenr, procname); -#endif - - /* XXX Omit "unknown" for now since it can be confusing (but it may help too!) */ if (strcmp(procname, "unknown") == 0) { procname = ""; } @@ -7309,20 +7304,23 @@ static int JimExprOpStrBin(Jim_Interp *interp, struct JimExprState *e) Jim_Obj *B = ExprPop(e); Jim_Obj *A = ExprPop(e); - int Alen, Blen; jim_wide wC; - /* XXX: Not needed for IN, NI */ - const char *sA = Jim_GetString(A, &Alen); - const char *sB = Jim_GetString(B, &Blen); - switch (e->opcode) { case JIM_EXPROP_STREQ: - wC = (Alen == Blen && memcmp(sA, sB, Alen) == 0); - break; - case JIM_EXPROP_STRNE: - wC = (Alen != Blen || memcmp(sA, sB, Alen) != 0); + case JIM_EXPROP_STRNE: { + int Alen, Blen; + const char *sA = Jim_GetString(A, &Alen); + const char *sB = Jim_GetString(B, &Blen); + + if (e->opcode == JIM_EXPROP_STREQ) { + wC = (Alen == Blen && memcmp(sA, sB, Alen) == 0); + } + else { + wC = (Alen != Blen || memcmp(sA, sB, Alen) != 0); + } break; + } case JIM_EXPROP_STRIN: wC = JimSearchList(interp, B, A); break; -- cgit v1.1