From e56152a9ef1cc23a90ba5b5a0b834bfd7a4628c7 Mon Sep 17 00:00:00 2001 From: oharboe Date: Sun, 16 Aug 2009 11:24:49 +0000 Subject: Should be able to compare strings for order in expr Signed-off-by: Steve Bennett --- jim.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'jim.c') 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); -- cgit v1.1