Browse Source

Use safe comparisons in oopcmp

master
Ian Piumarta 4 years ago
parent
commit
5e7538a2f7
1 changed files with 14 additions and 8 deletions
  1. +14
    -8
      object.c

+ 14
- 8
object.c View File

@ -328,14 +328,20 @@ int oopcmp(oop a, oop b)
type_t ta = getType(a), tb = getType(b);
if (ta == tb) {
switch (getType(a)) {
case Integer:
return getInteger(a) - getInteger(b);
case String:
return strcmp(get(a, String, value), get(b, String, value));
default:
if (a < b) return -1;
if (a > b) return 1;
return 0;
case Integer: {
int l= getInteger(a), r= getInteger(b);
if (l < r) return -1;
if (l > r) return 1;
return 0;
}
case String:
return strcmp(get(a, String, value), get(b, String, value));
default: {
intptr_t l= (intptr_t)a, r= (intptr_t)b;
if (l < r) return -1;
if (l > r) return 1;
return 0;
}
}
}
return ta - tb;

Loading…
Cancel
Save