authorgravatar for git@zander.xyzZander Khan <git@zander.xyz> 2021-01-16 18:11:26+00:00
committergravatar for git@zander.xyzZander Khan <git@zander.xyz> 2021-01-16 18:11:26+00:00
logc6986f29f94ee404ae3a3221449dc4af5599ca1f
treeaa59a32a53037ce289b0dd4ef0b9f6ec9969c2f6
parent4600b489a6daf3990afc8464dd7f2b9a1a4efa72

Fix update might change an element no longer in the queue


2 files changed, 2 insertions(+), 2 deletions(-)

lib/std/priority_dequeue.zig+1-1
...@@ -389,7 +389,7 @@ pub fn PriorityDequeue(comptime T: type) type {...@@ -389,7 +389,7 @@ pub fn PriorityDequeue(comptime T: type) type {
389 }389 }
390390
391 pub fn update(self: *Self, elem: T, new_elem: T) !void {391 pub fn update(self: *Self, elem: T, new_elem: T) !void {
392 var old_index: usize = std.mem.indexOfScalar(T, self.items, elem) orelse return error.ElementNotFound;392 var old_index: usize = std.mem.indexOfScalar(T, self.items[0 .. self.len - 1], elem) orelse return error.ElementNotFound;
393 _ = self.removeIndex(old_index);393 _ = self.removeIndex(old_index);
394 self.addUnchecked(new_elem);394 self.addUnchecked(new_elem);
395 }395 }
lib/std/priority_queue.zig+1-1
...@@ -199,7 +199,7 @@ pub fn PriorityQueue(comptime T: type) type {...@@ -199,7 +199,7 @@ pub fn PriorityQueue(comptime T: type) type {
199 }199 }
200200
201 pub fn update(self: *Self, elem: T, new_elem: T) !void {201 pub fn update(self: *Self, elem: T, new_elem: T) !void {
202 var update_index: usize = std.mem.indexOfScalar(T, self.items, elem) orelse return error.ElementNotFound;202 var update_index: usize = std.mem.indexOfScalar(T, self.items[0 .. self.len - 1], elem) orelse return error.ElementNotFound;
203 const old_elem: T = self.items[update_index];203 const old_elem: T = self.items[update_index];
204 self.items[update_index] = new_elem;204 self.items[update_index] = new_elem;
205 if (self.compareFn(new_elem, old_elem)) {205 if (self.compareFn(new_elem, old_elem)) {