From 6d957967ed9b863b7a635dfc1876df7eb9504f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Fri, 19 May 2023 16:12:33 +0300 Subject: [PATCH] multi_array_list: use slice() when possible --- src/DB.zig | 7 ++++--- src/turbonss-unix2db.zig | 13 ++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/DB.zig b/src/DB.zig index 2499391..6464897 100644 --- a/src/DB.zig +++ b/src/DB.zig @@ -580,9 +580,10 @@ fn usersSection( // 8 bytes. 24 is an optimistic lower bound for an average record size. var blob = try ArrayListAligned(u8, 8).initCapacity(allocator, 24 * corpus.users.len); errdefer blob.deinit(); - for (0..corpus.users.len) |i| { + const users = corpus.users.slice(); + for (0..users.len) |i| { // TODO: this may be inefficient by calling `.slice()` on every iteration? - const user = corpus.users.get(i); + const user = users.get(i); const user_offset = math.cast(u35, blob.items.len) orelse return error.TooMany; assert(user_offset & 7 == 0); idx2offset[i] = @truncate(u32, user_offset >> 3); @@ -595,7 +596,7 @@ fn usersSection( try blob.appendNTimes(0, mem.alignForward(blob.items.len, 8) - blob.items.len); } return UsersSection{ - .len = @intCast(u32, corpus.users.len), + .len = @intCast(u32, users.len), .idx2offset = idx2offset, .blob = try blob.toOwnedSlice(), }; diff --git a/src/turbonss-unix2db.zig b/src/turbonss-unix2db.zig index 4286ab2..d475754 100644 --- a/src/turbonss-unix2db.zig +++ b/src/turbonss-unix2db.zig @@ -215,17 +215,16 @@ test "turbonss-unix2db smoke test" { const group_fd = try os.open(groupPath, os.O.CREAT | os.O.WRONLY, 0o644); var i: usize = 0; - while (i < corpus.users.len) : (i += 1) { - const user = corpus.users.get(i); - const line = user.toLine().constSlice(); - _ = try os.write(passwd_fd, line); - } + const users = corpus.users.slice(); + while (i < users.len) : (i += 1) + _ = try os.write(passwd_fd, users.get(i).toLine().constSlice()); os.close(passwd_fd); var group_writer = (fs.File{ .handle = group_fd }).writer(); i = 0; - while (i < corpus.groups.len) : (i += 1) - try corpus.groups.get(i).writeTo(group_writer); + const groups = corpus.groups.slice(); + while (i < groups.len) : (i += 1) + try groups.get(i).writeTo(group_writer); os.close(group_fd); const args = &[_][*:0]const u8{