aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-09-28 07:34:52 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:55 +1000
commit2f5f6f266e2393a8351790c61de57b7d42f710ab (patch)
tree27c0111f7673a1ab1598a0fcd82030b8bcbdb96d
parent73b6640e994c4c954d54894a16acd5a151899c3a (diff)
downloadjimtcl-2f5f6f266e2393a8351790c61de57b7d42f710ab.zip
jimtcl-2f5f6f266e2393a8351790c61de57b7d42f710ab.tar.gz
jimtcl-2f5f6f266e2393a8351790c61de57b7d42f710ab.tar.bz2
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 <steveb@workware.net.au>
-rw-r--r--jim-array.c11
-rw-r--r--jim-eventloop.c9
-rw-r--r--jim.c26
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;