aboutsummaryrefslogtreecommitdiff
path: root/jim-array.c
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 /jim-array.c
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>
Diffstat (limited to 'jim-array.c')
-rw-r--r--jim-array.c11
1 files changed, 6 insertions, 5 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) {