summaryrefslogtreecommitdiffstats
path: root/jv_aux.c
diff options
context:
space:
mode:
Diffstat (limited to 'jv_aux.c')
-rw-r--r--jv_aux.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/jv_aux.c b/jv_aux.c
index 28755644..68811cd0 100644
--- a/jv_aux.c
+++ b/jv_aux.c
@@ -26,9 +26,12 @@ static int parse_slice(jv array, jv slice, int* pstart, int* pend) {
int end = (int)jv_number_value(end_jv);
if (start < 0) start = len + start;
if (end < 0) end = len + end;
+
if (start < 0) start = 0;
+ if (start > len) start = len;
if (end > len) end = len;
if (end < start) end = start;
+ assert(0 <= start && start <= end && end <= len);
*pstart = start;
*pend = end;
return 1;