summaryrefslogtreecommitdiff
path: root/src/scheme/ao_scheme_vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scheme/ao_scheme_vector.c')
-rw-r--r--src/scheme/ao_scheme_vector.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/scheme/ao_scheme_vector.c b/src/scheme/ao_scheme_vector.c
index afdc89a8..083823f3 100644
--- a/src/scheme/ao_scheme_vector.c
+++ b/src/scheme/ao_scheme_vector.c
@@ -159,13 +159,19 @@ ao_scheme_list_to_vector(struct ao_scheme_cons *cons)
}
struct ao_scheme_cons *
-ao_scheme_vector_to_list(struct ao_scheme_vector *vector)
+ao_scheme_vector_to_list(struct ao_scheme_vector *vector, int start, int end)
{
- unsigned int i;
+ int i;
uint16_t length = vector->length;
struct ao_scheme_cons *cons = NULL;
- for (i = length; i-- > 0;) {
+ if (end == -1)
+ end = length;
+ if (start < 0)
+ start = 0;
+ if (end > length)
+ end = length;
+ for (i = end; i-- > start;) {
ao_scheme_vector_stash(vector);
cons = ao_scheme_cons_cons(vector->vals[i], ao_scheme_cons_poly(cons));
vector = ao_scheme_vector_fetch();