| ... | ... | @@ -20,9 +20,13 @@ pub fn ParallelHasher(comptime Hasher: type) type { |
| 20 | 20 | }) !void { |
| 21 | 21 | var wg: WaitGroup = .{}; |
| 22 | 22 | |
| 23 | | const file_size = opts.max_file_size orelse try file.getEndPos(); |
| 23 | const file_size = blk: { |
| 24 | const file_size = opts.max_file_size orelse try file.getEndPos(); |
| 25 | break :blk std.math.cast(usize, file_size) orelse return error.Overflow; |
| 26 | }; |
| 27 | const chunk_size = std.math.cast(usize, opts.chunk_size) orelse return error.Overflow; |
| 24 | 28 | |
| 25 | | const buffer = try self.allocator.alloc(u8, opts.chunk_size * out.len); |
| 29 | const buffer = try self.allocator.alloc(u8, chunk_size * out.len); |
| 26 | 30 | defer self.allocator.free(buffer); |
| 27 | 31 | |
| 28 | 32 | const results = try self.allocator.alloc(fs.File.PReadError!usize, out.len); |
| ... | ... | @@ -33,8 +37,8 @@ pub fn ParallelHasher(comptime Hasher: type) type { |
| 33 | 37 | defer wg.wait(); |
| 34 | 38 | |
| 35 | 39 | for (out, results, 0..) |*out_buf, *result, i| { |
| 36 | | const fstart = i * opts.chunk_size; |
| 37 | | const fsize = if (fstart + opts.chunk_size > file_size) file_size - fstart else opts.chunk_size; |
| 40 | const fstart = i * chunk_size; |
| 41 | const fsize = if (fstart + chunk_size > file_size) file_size - fstart else chunk_size; |
| 38 | 42 | wg.start(); |
| 39 | 43 | try self.thread_pool.spawn(worker, .{ |
| 40 | 44 | file, |