detect invalid path expression (fix #862)

This commit is contained in:
David Tolnay committed 2015-07-24 20:23:07 -07:00
1 parent 5856a2d2c0
commit 16e8d0b1ab
4 files changed
+129 -11

No files matched your search

+27 -4
View File
@@ -137,10 +137,7 @@ static void jvp_invalid_free(jv x) {
*/
jv jv_number(double x) {
jv j;
j.kind_flags = JV_KIND_NUMBER;
j.size = 0;
j.u.number = x;
jv j = {JV_KIND_NUMBER, 0, 0, 0, {.number = x}};
return j;
}
@@ -1291,6 +1288,32 @@ int jv_equal(jv a, jv b) {
return r;
}
int jv_identical(jv a, jv b) {
int r;
if (a.kind_flags != b.kind_flags
|| a.offset != b.offset
|| a.size != b.size) {
r = 0;
} else {
switch (jv_get_kind(a)) {
case JV_KIND_ARRAY:
case JV_KIND_STRING:
case JV_KIND_OBJECT:
r = a.u.ptr == b.u.ptr;
break;
case JV_KIND_NUMBER:
r = a.u.number == b.u.number;
break;
default:
r = 1;
break;
}
}
jv_free(a);
jv_free(b);
return r;
}
int jv_contains(jv a, jv b) {
int r = 1;
if (jv_get_kind(a) != jv_get_kind(b)) {