summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib.c b/lib.c
index 6e097e80..8bec2c90 100644
--- a/lib.c
+++ b/lib.c
@@ -1441,7 +1441,6 @@ val iter_step(val iter)
val iter_reset(val iter, val obj)
{
val self = lit("iter-reset");
- seq_info_t sinf = seq_info(obj);
switch (type(iter)) {
case CHR:
@@ -1452,6 +1451,7 @@ val iter_reset(val iter, val obj)
if (iter->co.cls == seq_iter_cls)
{
struct seq_iter *si = coerce(struct seq_iter *, iter->co.handle);
+ seq_info_t sinf = seq_info(obj);
seq_iter_init_with_info(self, si, sinf, 0);
if (si->ops->mark)
mut(iter);
@@ -1464,12 +1464,16 @@ val iter_reset(val iter, val obj)
if (iter_reset_meth)
return funcall2(iter_reset_meth, obj, iter);
}
- switch (sinf.kind) {
- case SEQ_NIL:
- case SEQ_LISTLIKE:
- return sinf.obj;
- default:
- return iter_begin(obj);
+
+ {
+ seq_info_t sinf = seq_info(obj);
+ switch (sinf.kind) {
+ case SEQ_NIL:
+ case SEQ_LISTLIKE:
+ return sinf.obj;
+ default:
+ return iter_begin(obj);
+ }
}
}
}