From a8c01eb5f0eebd14f53d4ccc9e227803169d1e6b Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Sat, 16 May 2026 09:02:18 +0300 Subject: [PATCH] os: rewind file pointer before streaming fallback for device files find_cfile_size returns 0 for device files like NUL on Windows where ftell returns -1, triggering the streaming fallback. But the file pointer was left at SEEK_END, so fread in slurp_file_in_builder crashed on MinGW CRT. Add C.rewind before returning. --- vlib/os/os.c.v | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vlib/os/os.c.v b/vlib/os/os.c.v index 1ca3052a9..aaf58ce2e 100644 --- a/vlib/os/os.c.v +++ b/vlib/os/os.c.v @@ -112,7 +112,8 @@ fn find_cfile_size(fp &C.FILE) !int { return error('ftell failed') } // fseek succeeded but ftell returned -1 (e.g. device files like NUL on Windows). - // Treat as zero-size to use the streaming fallback path. + // Rewind before returning so the caller can read from the beginning. + C.rewind(fp) return 0 } len := int(raw_fsize) -- 2.39.5