aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2011-06-16 13:56:05 +1000
committerSteve Bennett <steveb@workware.net.au>2011-07-07 21:34:34 +1000
commit7ff7ff2e1c95d3bea5effbf1e8f0e8f401e2e625 (patch)
tree5b92e2421a6aee6084ea0bddbfb1e59f815f3bb0 /jim.c
parent2b6aed8f63674d6b17ce06d4df60987ff33c0f55 (diff)
downloadjimtcl-7ff7ff2e1c95d3bea5effbf1e8f0e8f401e2e625.zip
jimtcl-7ff7ff2e1c95d3bea5effbf1e8f0e8f401e2e625.tar.gz
jimtcl-7ff7ff2e1c95d3bea5effbf1e8f0e8f401e2e625.tar.bz2
Optimise [lrange] when returning the whole list
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/jim.c b/jim.c
index d343a41..1ec3e67 100644
--- a/jim.c
+++ b/jim.c
@@ -6195,6 +6195,9 @@ Jim_Obj *Jim_ListRange(Jim_Interp *interp, Jim_Obj *listObjPtr, Jim_Obj *firstOb
first = JimRelToAbsIndex(len, first);
last = JimRelToAbsIndex(len, last);
JimRelToAbsRange(len, first, last, &first, &last, &rangeLen);
+ if (first == 0 && last == len) {
+ return listObjPtr;
+ }
return Jim_NewListObj(interp, listObjPtr->internalRep.listValue.ele + first, rangeLen);
}