From ff7ab6e5a401cd728ab5a440659346bd50e0e9c9 Mon Sep 17 00:00:00 2001 From: oharboe Date: Sun, 16 Aug 2009 11:24:49 +0000 Subject: 2009-08-16 Steve Bennett * jim.c: Should be able to compare strings for order in expr --- jim.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'jim.c') diff --git a/jim.c b/jim.c index 3c74aa2..a1c1f63 100644 --- a/jim.c +++ b/jim.c @@ -7030,10 +7030,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); @@ -7095,6 +7092,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; @@ -7108,8 +7113,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