-
-
Notifications
You must be signed in to change notification settings - Fork 849
Open
Labels
Description
Context
Odin: dev-2025-04-nightly:d9f990d
OS: Windows 10 Professional (version: 22H2), build 19045.5737
CPU: AMD Ryzen 7 5700X 8-Core Processor
RAM: 32688 MiB
Backend: LLVM 20.1.0
Expected Behavior
Using os2.stdin.stream should behave the same as os.stream_from_handle(os.stdin), reading all provided input.
// test_os.odin
package main
import "core:strconv"
import "core:os"
import "core:io"
import "core:fmt"
main :: proc() {
content_len, _ := strconv.parse_int(os.args[1])
stdin_stream := os.stream_from_handle(os.stdin)
data := make([]byte, content_len)
if _, err := io.read_full(stdin_stream, data); err != nil {
fmt.eprintfln("io.read_full err: %v", err)
}
fmt.println(string(data))
}odin run test_os.odin -file -- 26 Enter abcdefghijklmnopqrstuvwxyz Enter
C:\code\os2_stdin>odin run test_os.odin -file -- 26
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
C:\code\os2_stdin>
Current Behavior
// test_os2.odin
package main
import "core:strconv"
import "core:os/os2"
import "core:io"
import "core:fmt"
main :: proc() {
content_len, _ := strconv.parse_int(os2.args[1])
data := make([]byte, content_len)
if _, err := io.read_full(os2.stdin.stream, data); err != nil {
fmt.eprintfln("io.read_full err: %v", err)
}
fmt.println(string(data))
}odin run test_os2.odin -file -- 26 Enter abcdefghijklmnopqrstuvwxyz Enter Enter
C:\code\os2_stdin>odin run test_os2.odin -file -- 26
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvyz
C:\code\os2_stdin>
Removing +i from
Odin/core/os/os2/file_windows.odin
Line 345 in d463aba
| for i := 0; i < len(src) && n+i < len(b); i += 1 { |
which is not present in
Line 400 in d463aba
| for i := 0; i < len(src) && n < len(b); i += 1 { |
seems to fix the issue.