Follow up the PR#542: improve assert() calls, simplify code in json_object_equal().

This commit is contained in:
Eric Haszlakiewicz
2020-03-02 02:08:49 +00:00
parent 737aee40c4
commit b3296e778f

View File

@@ -597,7 +597,7 @@ json_bool json_object_get_boolean(const struct json_object *jso)
case json_object_int_type_uint64: case json_object_int_type_uint64:
return (jso->o.c_int.cint.c_uint64 != 0); return (jso->o.c_int.cint.c_uint64 != 0);
default: default:
assert(0); assert(!"invalid cint_type");
} }
case json_type_double: case json_type_double:
return (jso->o.c_double != 0); return (jso->o.c_double != 0);
@@ -734,7 +734,7 @@ int64_t json_object_get_int64(const struct json_object *jso)
return INT64_MAX; return INT64_MAX;
return (int64_t)jso->o.c_int.cint.c_uint64; return (int64_t)jso->o.c_int.cint.c_uint64;
default: default:
assert(0); assert(!"invalid cint_type");
} }
case json_type_double: case json_type_double:
// INT64_MAX can't be exactly represented as a double // INT64_MAX can't be exactly represented as a double
@@ -772,7 +772,7 @@ uint64_t json_object_get_uint64(const struct json_object *jso)
case json_object_int_type_uint64: case json_object_int_type_uint64:
return jso->o.c_int.cint.c_uint64; return jso->o.c_int.cint.c_uint64;
default: default:
assert(0); assert(!"invalid cint_type");
} }
case json_type_double: case json_type_double:
// UINT64_MAX can't be exactly represented as a double // UINT64_MAX can't be exactly represented as a double
@@ -836,7 +836,7 @@ int json_object_int_inc(struct json_object *jso, int64_t val) {
} }
return 1; return 1;
default: default:
assert(0); assert(!"invalid cint_type");
} }
} }
@@ -1067,7 +1067,7 @@ double json_object_get_double(const struct json_object *jso)
case json_object_int_type_uint64: case json_object_int_type_uint64:
return jso->o.c_int.cint.c_uint64; return jso->o.c_int.cint.c_uint64;
default: default:
assert(0); assert(!"invalid cint_type");
} }
case json_type_boolean: case json_type_boolean:
return jso->o.c_boolean; return jso->o.c_boolean;
@@ -1447,23 +1447,20 @@ int json_object_equal(struct json_object* jso1, struct json_object* jso2)
return (jso1->o.c_double == jso2->o.c_double); return (jso1->o.c_double == jso2->o.c_double);
case json_type_int: case json_type_int:
if (jso1->o.c_int.cint_type == json_object_int_type_int64) { if (jso1->o.c_int.cint_type == json_object_int_type_int64)
if (jso2->o.c_int.cint_type == json_object_int_type_int64) { {
if (jso2->o.c_int.cint_type == json_object_int_type_int64)
return (jso1->o.c_int.cint.c_int64 == jso2->o.c_int.cint.c_int64); return (jso1->o.c_int.cint.c_int64 == jso2->o.c_int.cint.c_int64);
} else { if (jso1->o.c_int.cint.c_int64 < 0)
if (jso1->o.c_int.cint.c_int64 < 0) return 0;
return 0; return ((uint64_t)jso1->o.c_int.cint.c_int64 == jso2->o.c_int.cint.c_uint64);
return ((uint64_t)jso1->o.c_int.cint.c_int64 == jso2->o.c_int.cint.c_uint64);
}
} else {
if (jso2->o.c_int.cint_type == json_object_int_type_uint64) {
return (jso1->o.c_int.cint.c_uint64 == jso2->o.c_int.cint.c_uint64);
} else {
if (jso2->o.c_int.cint.c_int64 < 0)
return 0;
return (jso1->o.c_int.cint.c_uint64 == (uint64_t)jso2->o.c_int.cint.c_int64);
}
} }
// else jso1 is a uint64
if (jso2->o.c_int.cint_type == json_object_int_type_uint64)
return (jso1->o.c_int.cint.c_uint64 == jso2->o.c_int.cint.c_uint64);
if (jso2->o.c_int.cint.c_int64 < 0)
return 0;
return (jso1->o.c_int.cint.c_uint64 == (uint64_t)jso2->o.c_int.cint.c_int64);
case json_type_string: case json_type_string:
return (jso1->o.c_string.len == jso2->o.c_string.len && return (jso1->o.c_string.len == jso2->o.c_string.len &&
@@ -1533,7 +1530,7 @@ int json_c_shallow_copy_default(json_object *src, json_object *parent, const cha
*dst = json_object_new_uint64(src->o.c_int.cint.c_uint64); *dst = json_object_new_uint64(src->o.c_int.cint.c_uint64);
break; break;
default: default:
assert(0); assert(!"invalid cint_type");
} }
break; break;