summaryrefslogtreecommitdiffstats
path: root/jv_aux.c
diff options
context:
space:
mode:
authorWilliam Langford <wlangfor@gmail.com>2014-07-04 12:08:47 -0400
committerNicolas Williams <nico@cryptonector.com>2014-07-06 01:40:22 -0500
commitd0ca11d6652cc8aeb0ea4fc674f427f81dcf1467 (patch)
tree1165b228ddce5fc24f9febae80ae0109289c542e /jv_aux.c
parent7d3a44a1e23ead9dd413ae26f7a5e1de993f376a (diff)
Add support for negative indices for .[]; fix #462
Signed-off-by: Nicolas Williams <nico@cryptonector.com>
Diffstat (limited to 'jv_aux.c')
-rw-r--r--jv_aux.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/jv_aux.c b/jv_aux.c
index 5f233e05..dec5ce20 100644
--- a/jv_aux.c
+++ b/jv_aux.c
@@ -57,7 +57,10 @@ jv jv_get(jv t, jv k) {
}
} else if (jv_get_kind(t) == JV_KIND_ARRAY && jv_get_kind(k) == JV_KIND_NUMBER) {
if(jv_is_integer(k)){
- v = jv_array_get(t, (int)jv_number_value(k));
+ int idx = (int)jv_number_value(k);
+ if (idx < 0)
+ idx += jv_array_length(jv_copy(t));
+ v = jv_array_get(t, idx);
if (!jv_is_valid(v)) {
jv_free(v);
v = jv_null();