From 9911c90b1d567905f2c14dce3ab864f75931daaa Mon Sep 17 00:00:00 2001 From: Andrew Chambers Date: Wed, 4 Dec 2019 13:58:21 +1300 Subject: [PATCH] Handle missing get case. --- src/core/value.c | 7 ++++++- test/suite0.janet | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/value.c b/src/core/value.c index bc1c43ad..1189e3fb 100644 --- a/src/core/value.c +++ b/src/core/value.c @@ -229,7 +229,8 @@ Janet janet_get(Janet ds, Janet key) { return (type->get)(abst, key); } case JANET_ARRAY: - case JANET_TUPLE: { + case JANET_TUPLE: + case JANET_BUFFER: { if (!janet_checkint(key)) return janet_wrap_nil(); int32_t index = janet_unwrap_integer(key); if (index < 0) return janet_wrap_nil(); @@ -237,6 +238,10 @@ Janet janet_get(Janet ds, Janet key) { JanetArray *a = janet_unwrap_array(ds); if (index >= a->count) return janet_wrap_nil(); return a->data[index]; + } else if (t == JANET_BUFFER) { + JanetBuffer *b = janet_unwrap_buffer(ds); + if (index >= b->count) return janet_wrap_nil(); + return janet_wrap_integer(b->data[index]); } else { const Janet *t = janet_unwrap_tuple(ds); if (index >= janet_tuple_length(t)) return janet_wrap_nil(); diff --git a/test/suite0.janet b/test/suite0.janet index b13ee819..16b764d3 100644 --- a/test/suite0.janet +++ b/test/suite0.janet @@ -55,6 +55,8 @@ (assert (= (get @{} 1) nil) "get nil from empty table") (assert (= (get {:boop :bap} :boop) :bap) "get non nil from struct") (assert (= (get @{:boop :bap} :boop) :bap) "get non nil from table") +(assert (= (get @"\0" 0) 0) "get non nil from buffer") +(assert (= (get @"\0" 1) nil) "get nil from buffer oob") (assert (put @{} :boop :bap) "can add to empty table") (assert (put @{1 3} :boop :bap) "can add to non-empty table")