[1/5] msvcrt: Free old buffer properly in setvbuf.

Grazvydas Ignotas notasas at gmail.com
Fri Jun 13 18:23:54 CDT 2014


Solves user's buffer being incorrectly freed on fclose/setvbuf after
custom buffer has been set with setvbuf.
---
 dlls/msvcrt/file.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 7ebf6d2..7590510 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -4465,7 +4465,10 @@ int CDECL MSVCRT_setvbuf(MSVCRT_FILE* file, char *buf, int mode, MSVCRT_size_t s
 {
   MSVCRT__lock_file(file);
   if(file->_bufsiz) {
-	MSVCRT_free(file->_base);
+	if(file->_flag & MSVCRT__IOMYBUF)
+		MSVCRT_free(file->_base);
+	file->_flag &= ~MSVCRT__IOMYBUF;
+  	file->_base = file->_ptr = NULL;
 	file->_bufsiz = 0;
 	file->_cnt = 0;
   }
-- 
1.7.9.5




More information about the wine-patches mailing list