aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroharboe <oharboe>2009-08-16 11:24:49 +0000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 10:59:49 +1000
commite56152a9ef1cc23a90ba5b5a0b834bfd7a4628c7 (patch)
tree07330b969d89e353df6977e1c773be6e9874256a
parentebeb827b390fc16a336075602b70bb195f966430 (diff)
downloadjimtcl-e56152a9ef1cc23a90ba5b5a0b834bfd7a4628c7.zip
jimtcl-e56152a9ef1cc23a90ba5b5a0b834bfd7a4628c7.tar.gz
jimtcl-e56152a9ef1cc23a90ba5b5a0b834bfd7a4628c7.tar.bz2
Should be able to compare strings for order in expr
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/jim.c b/jim.c
index 3b0e207..809ac1b 100644
--- a/jim.c
+++ b/jim.c
@@ -7009,10 +7009,7 @@ trydouble:
opcode = JIM_EXPROP_STREQ;
goto retry_as_string;
}
- Jim_DecrRefCount(interp, A);
- Jim_DecrRefCount(interp, B);
- error = 1;
- goto err;
+ goto retry_as_string;
}
Jim_DecrRefCount(interp, A);
Jim_DecrRefCount(interp, B);
@@ -7074,6 +7071,14 @@ retry_as_string:
sA = Jim_GetString(A, &Alen);
sB = Jim_GetString(B, &Blen);
switch(opcode) {
+ case JIM_EXPROP_LT:
+ wC = JimStringCompare(sA, Alen, sB, Blen, 0) < 0; break;
+ case JIM_EXPROP_GT:
+ wC = JimStringCompare(sA, Alen, sB, Blen, 0) > 0; break;
+ case JIM_EXPROP_LTE:
+ wC = JimStringCompare(sA, Alen, sB, Blen, 0) <= 0; break;
+ case JIM_EXPROP_GTE:
+ wC = JimStringCompare(sA, Alen, sB, Blen, 0) >= 0; break;
case JIM_EXPROP_STREQ:
if (Alen == Blen && memcmp(sA, sB, Alen) ==0)
wC = 1;
@@ -7087,8 +7092,11 @@ retry_as_string:
wC = 0;
break;
default:
- wC = 0; /* avoid gcc warning */
- break;
+ /* Not a valid string comparison */
+ Jim_DecrRefCount(interp, A);
+ Jim_DecrRefCount(interp, B);
+ error = 1;
+ goto err;
}
Jim_DecrRefCount(interp, A);
Jim_DecrRefCount(interp, B);