From 8f642097e5ce2d6274cdd21701205499d15388e9 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Thu, 26 Dec 2024 11:49:50 -0700 Subject: [PATCH] module: fix anyUpdated; make fields default to updated=true Signed-off-by: Stephen Gutekanst --- src/module.zig | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/module.zig b/src/module.zig index 977697d9..45a27eb7 100644 --- a/src/module.zig +++ b/src/module.zig @@ -168,7 +168,7 @@ pub fn Objects(options: ObjectsOptions, comptime T: type) type { // If we are tracking fields, we need to resize the bitset to hold another object's fields if (objs.internal.updated) |*updated_fields| { - try updated_fields.resize(allocator, data.capacity * @typeInfo(T).@"struct".fields.len, false); + try updated_fields.resize(allocator, data.capacity * @typeInfo(T).@"struct".fields.len, true); } const index = data.len; @@ -324,15 +324,16 @@ pub fn Objects(options: ObjectsOptions, comptime T: type) type { if (!options.track_fields) return false; const unpacked = objs.validateAndUnpack(id, "updated"); const updated_fields = &(objs.internal.updated orelse return false); + var any_updated = false; inline for (0..@typeInfo(T).@"struct".fields.len) |field_index| { const updated_index = unpacked.index * @typeInfo(T).@"struct".fields.len + field_index; const updated_value = updated_fields.isSet(updated_index); + updated_fields.unset(updated_index); if (updated_value) { - updated_fields.unset(updated_index); - return true; + any_updated = true; } } - return false; + return any_updated; } /// Tells if the given object is from this pool of objects. If it is, then it must also be