motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

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:
Mlib/std/priority_dequeue.zig | 2+-
Mlib/std/priority_queue.zig | 2+-
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)) {