Fix failure to cleanup wide stream buffers in preparation for BZ#16734 fix

Paul Pluzhnikov ppluzhnikov@gmail.com
Sun Jul 12 19:22:00 GMT 2015


Greetings,

In preparation for BZ#16734 fix, I've build libc with (not intended to commit):

diff --git a/libio/libioP.h b/libio/libioP.h
index d8604ca..d1699de 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -719,7 +719,7 @@ extern _IO_off64_t _IO_seekpos_unlocked (_IO_FILE
*, _IO_off64_t, int)
 # endif
 #endif

-#if _G_HAVE_MMAP
+#if _G_HAVE_MMAP && 0

 # include <unistd.h>
 # include <fcntl.h>
... etc.

This results in mtrace test failure:
FAIL: misc/tst-error1-mem

Attached patch fixes the test failure.

Thanks,

-- 
Paul Pluzhnikov



2015-07-12  Paul Pluzhnikov  <ppluzhnikov@google.com>

        [BZ #16734]
        * libio/genops.c (_IO_unbuffer_all): Free wide buffer as well.
-------------- next part --------------
diff --git a/libio/genops.c b/libio/genops.c
index 0f5e800..e13b3d1 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -977,6 +977,9 @@ _IO_unbuffer_all (void)
 
 	  _IO_SETBUF (fp, NULL, 0);
 
+	  if (fp->_mode > 0)
+	    _IO_wsetb (fp, NULL, NULL, 0);
+
 #ifdef _IO_MTSAFE_IO
 	  if (cnt < MAXTRIES && fp->_lock != NULL)
 	    _IO_lock_unlock (*fp->_lock);


More information about the Libc-alpha mailing list