Skip to content

Commit 9e07645

Browse files
peter-jerry-yebobzhang
authored andcommitted
fix: handle flatten properly
1 parent 2b4ad23 commit 9e07645

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

deque/deque.mbt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1953,13 +1953,11 @@ pub fn[A] Deque::flatten(self : Deque[Deque[A]]) -> Deque[A] {
19531953
}
19541954
let mut i = 0
19551955
for deque in self {
1956-
let cap = deque.buf.length()
1957-
let head_len = cap - deque.head
1958-
target.buf.unsafe_blit(i, deque.buf, deque.head, head_len)
1959-
if head_len < deque.len {
1960-
target.buf.unsafe_blit(i + head_len, deque.buf, 0, deque.len - head_len)
1961-
}
1962-
i += deque.len
1956+
let (front, end) = deque.as_views()
1957+
target.buf.unsafe_blit(i, deque.buf, front.start_offset(), front.length())
1958+
i += front.length()
1959+
target.buf.unsafe_blit(i, deque.buf, end.start_offset(), end.length())
1960+
i += end.length()
19631961
}
19641962
target
19651963
}

0 commit comments

Comments
 (0)