Commit e667884f9b

Andrew Kelley <andrew@ziglang.org>
2025-08-11 02:38:46
std.net.Stream.Reader: init size_err
This code knows in advance that stat() should never be called. closes #24754
1 parent e25168d
Changed files (2)
lib
lib/std/fs/File.zig
@@ -1122,10 +1122,15 @@ pub const Reader = struct {
     /// position, use `logicalPos`.
     pos: u64 = 0,
     size: ?u64 = null,
-    size_err: ?GetEndPosError = null,
+    size_err: ?SizeError = null,
     seek_err: ?Reader.SeekError = null,
     interface: std.Io.Reader,
 
+    pub const SizeError = std.os.windows.GetFileSizeError || StatError || error{
+        /// Occurs if, for example, the file handle is a network socket and therefore does not have a size.
+        Streaming,
+    };
+
     pub const SeekError = File.SeekError || error{
         /// Seeking fell back to reading, and reached the end before the requested seek position.
         /// `pos` remains at the end of the file.
lib/std/net.zig
@@ -2064,6 +2064,7 @@ pub const Stream = struct {
                         .file = .{ .handle = net_stream.handle },
                         .mode = .streaming,
                         .seek_err = error.Unseekable,
+                        .size_err = error.Streaming,
                     },
                 };
             }