From 439117d0d75f28d8d555fceacc42315ec1dd8e34 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 1 May 2025 14:57:20 -0700 Subject: [PATCH] std.compress.zstd.Decompress: avoid `@errorCast` better error return traces and type safety --- lib/std/compress/zstd/Decompress.zig | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/std/compress/zstd/Decompress.zig b/lib/std/compress/zstd/Decompress.zig index e7980a195a..8437af6793 100644 --- a/lib/std/compress/zstd/Decompress.zig +++ b/lib/std/compress/zstd/Decompress.zig @@ -261,13 +261,19 @@ fn discard(context: ?*anyopaque, limit: Reader.Limit) Reader.Error!usize { var trash_buffer: [64]u8 = undefined; var null_writer: std.io.Writer.Null = undefined; var bw = null_writer.writer().buffered(&trash_buffer); - return @errorCast(read(context, &bw, limit)); + return read(context, &bw, limit) catch |err| switch (err) { + error.WriteFailed => unreachable, + else => |e| return e, + }; } fn readVec(context: ?*anyopaque, data: []const []u8) Reader.Error!usize { var bw: BufferedWriter = undefined; bw.initFixed(data[0]); - return @errorCast(read(context, &bw, .limited(data[0].len))); + return read(context, &bw, .limited(data[0].len)) catch |err| switch (err) { + error.WriteFailed => unreachable, + else => |e| return e, + }; } pub const Frame = struct {