-
- Downloads
libstdc++: Add workaround for read(2) EINVAL on macOS and FreeBSD [PR102259]
On macOS and FreeBSD the read(2) system call can return EINVAL for large sizes, so limit the maximum that we try to read. The calling code in basic_filebuf::xsgetn will loop until it gets the size it wants, so we don't need to loop in basic_file::xsgetn, just limit the maximum size. libstdc++-v3/ChangeLog: PR libstdc++/102259 * config/io/basic_file_stdio.cc (basic_file::xsgetn): Limit n to _GLIBCXX_MAX_READ_SIZE if that macro is defined. * config/os/bsd/darwin/os_defines.h (_GLIBCXX_MAX_READ_SIZE): Define to INT_MAX-1. * config/os/bsd/freebsd/os_defines.h (_GLIBCXX_MAX_READ_SIZE): Likewise.
Showing
- libstdc++-v3/config/io/basic_file_stdio.cc 6 additions, 0 deletionslibstdc++-v3/config/io/basic_file_stdio.cc
- libstdc++-v3/config/os/bsd/darwin/os_defines.h 3 additions, 0 deletionslibstdc++-v3/config/os/bsd/darwin/os_defines.h
- libstdc++-v3/config/os/bsd/freebsd/os_defines.h 3 additions, 0 deletionslibstdc++-v3/config/os/bsd/freebsd/os_defines.h
Loading
Please register or sign in to comment