commit c6986f29f94ee404ae3a3221449dc4af5599ca1f (tree)
parent 4600b489a6daf3990afc8464dd7f2b9a1a4efa72
Author: Zander Khan <git@zander.xyz>
Date: Sat, 16 Jan 2021 18:11:26 +0000
Fix update might change an element no longer in the queue
Diffstat:
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/std/priority_dequeue.zig b/lib/std/priority_dequeue.zig
@@ -389,7 +389,7 @@ pub fn PriorityDequeue(comptime T: type) type {
}
pub fn update(self: *Self, elem: T, new_elem: T) !void {
- var old_index: usize = std.mem.indexOfScalar(T, self.items, elem) orelse return error.ElementNotFound;
+ var old_index: usize = std.mem.indexOfScalar(T, self.items[0 .. self.len - 1], elem) orelse return error.ElementNotFound;
_ = self.removeIndex(old_index);
self.addUnchecked(new_elem);
}
diff --git a/lib/std/priority_queue.zig b/lib/std/priority_queue.zig
@@ -199,7 +199,7 @@ pub fn PriorityQueue(comptime T: type) type {
}
pub fn update(self: *Self, elem: T, new_elem: T) !void {
- var update_index: usize = std.mem.indexOfScalar(T, self.items, elem) orelse return error.ElementNotFound;
+ var update_index: usize = std.mem.indexOfScalar(T, self.items[0 .. self.len - 1], elem) orelse return error.ElementNotFound;
const old_elem: T = self.items[update_index];
self.items[update_index] = new_elem;
if (self.compareFn(new_elem, old_elem)) {