libstdc++: Fix --enable-cstdio=stdio_pure [PR110574]
When configured with --enable-cstdio=stdio_pure we need to consistently use fseek and not mix seeks on the file descriptor with reads and writes on the FILE stream. There are also a number of bugs related to error handling and return values, because fread and fwrite return 0 on error, not -1, and fseek returns 0 on success, not the file offset. libstdc++-v3/ChangeLog: PR libstdc++/110574 * acinclude.m4 (GLIBCXX_CHECK_LFS): Check for fseeko and ftello and define _GLIBCXX_USE_FSEEKO_FTELLO. * config.h.in: Regenerate. * configure: Regenerate. * config/io/basic_file_stdio.cc (xwrite) [_GLIBCXX_USE_STDIO_PURE]: Check for fwrite error correctly. (__basic_file<char>::xsgetn) [_GLIBCXX_USE_STDIO_PURE]: Check for fread error correctly. (get_file_offset): New function. (__basic_file<char>::seekoff) [_GLIBCXX_USE_STDIO_PURE]: Use fseeko if available. Use get_file_offset instead of return value of fseek. (__basic_file<char>::showmanyc): Use get_file_offset. (cherry picked from commit 2f6bbc9a)
Showing
- libstdc++-v3/acinclude.m4 16 additions, 0 deletionslibstdc++-v3/acinclude.m4
- libstdc++-v3/config.h.in 3 additions, 0 deletionslibstdc++-v3/config.h.in
- libstdc++-v3/config/io/basic_file_stdio.cc 48 additions, 18 deletionslibstdc++-v3/config/io/basic_file_stdio.cc
- libstdc++-v3/configure 66 additions, 0 deletionslibstdc++-v3/configure
Loading
Please register or sign in to comment