diff options
author | oharboe <oharboe> | 2009-08-16 11:24:49 +0000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 10:59:49 +1000 |
commit | e56152a9ef1cc23a90ba5b5a0b834bfd7a4628c7 (patch) | |
tree | 07330b969d89e353df6977e1c773be6e9874256a | |
parent | ebeb827b390fc16a336075602b70bb195f966430 (diff) | |
download | jimtcl-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.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -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); |