]> granicus.if.org Git - jq/commitdiff
Bugfix for array slices.
authorStephen Dolan <mu@netsoc.tcd.ie>
Tue, 14 May 2013 23:22:44 +0000 (00:22 +0100)
committerStephen Dolan <mu@netsoc.tcd.ie>
Tue, 14 May 2013 23:22:44 +0000 (00:22 +0100)
jv_aux.c
tests/all.test

index 28755644c4f8b87af5eac3c97d7e3f6a4386ed62..68811cd08aa136064cf8158c8b8d59953f88d105 100644 (file)
--- 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;
index 4eaa9b613294730a1fcb5147c0fc9121daca86a6..0119dad65776f32e0ace6e775e71954002ce5a9f 100644 (file)
@@ -170,9 +170,9 @@ null
 # Slices
 #
 
-[.[3:2], .[-5:4], .[:-2], .[-2:]]
+[.[3:2], .[-5:4], .[:-2], .[-2:], .[3:3][1:], .[10:]]
 [0,1,2,3,4,5,6]
-[[], [2,3], [0,1,2,3,4], [5,6]]
+[[], [2,3], [0,1,2,3,4], [5,6], [], []]
 
 del(.[2:4],.[0],.[-2:])
 [0,1,2,3,4,5,6,7]