authorgravatar for literallyvoid@gmail.comLiterally Void <literallyvoid@gmail.com> 2020-09-09 20:49:49-07:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-09-10 12:00:53+03:00
log78baa16da020ec9ad741b8f3f9c6168ec77ef58d
treee04b2a1763c3aa3b62ba0b9ccd2327011e53ea59
parent749417a1f3060f0695bbfe72d929f06b0be42535

Fix issue #6303: iterating empty PriorityQueue crashes


1 files changed, 10 insertions(+), 1 deletions(-)

lib/std/priority_queue.zig+10-1
......@@ -195,7 +195,7 @@ pub fn PriorityQueue(comptime T: type) type {
195195 count: usize,
196196
197197 pub fn next(it: *Iterator) ?T {
198 if (it.count > it.queue.len - 1) return null;
198 if (it.count >= it.queue.len) return null;
199199 const out = it.count;
200200 it.count += 1;
201201 return it.queue.items[out];
......@@ -428,3 +428,12 @@ test "std.PriorityQueue: remove at index" {
428428 expectEqual(queue.remove(), 3);
429429 expectEqual(queue.removeOrNull(), null);
430430}
431
432test "std.PriorityQueue: iterator while empty" {
433 var queue = PQ.init(testing.allocator, lessThan);
434 defer queue.deinit();
435
436 var it = queue.iterator();
437
438 expectEqual(it.next(), null);
439}