[PATCH] libio: Fix wrong reference to byte stream

Rocket Ma marocketbd@gmail.com
Wed Mar 18 05:06:37 GMT 2026


* libio/wgenops.c: Fix _IO_wdefault_pbackfail and _IO_wdefault_finish by
deferencing wide stream pointers, should be a mistake (bug 33998[1] and
bug 33999[2])

[1]: https://sourceware.org/bugzilla/show_bug.cgi?id=33998
[2]: https://sourceware.org/bugzilla/show_bug.cgi?id=33999

Signed-off-by: Rocket Ma <marocketbd@gmail.com>
---
 libio/wgenops.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libio/wgenops.c b/libio/wgenops.c
index 064d71266d..3ebbb941f0 100644
--- a/libio/wgenops.c
+++ b/libio/wgenops.c
@@ -110,8 +110,8 @@ _IO_wdefault_pbackfail (FILE *fp, wint_t c)
 {
   if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base
       && !_IO_in_backup (fp)
-      && (wint_t) fp->_IO_read_ptr[-1] == c)
-    --fp->_IO_read_ptr;
+      && (wint_t) fp->_wide_data->_IO_read_ptr[-1] == c)
+    --fp->_wide_data->_IO_read_ptr;
   else
     {
       /* Need to handle a filebuf in write mode (switch to read mode). FIXME!*/
@@ -181,10 +181,10 @@ _IO_wdefault_finish (FILE *fp, int dummy)
   for (mark = fp->_markers; mark != NULL; mark = mark->_next)
     mark->_sbuf = NULL;
 
-  if (fp->_IO_save_base)
+  if (fp->_wide_data->_IO_save_base)
     {
       free (fp->_wide_data->_IO_save_base);
-      fp->_IO_save_base = NULL;
+      fp->_wide_data->_IO_save_base = NULL;
     }
 
 #ifdef _IO_MTSAFE_IO
-- 
2.53.0


More information about the Libc-alpha mailing list