Piotr Caban : msvcrt: Don' t write to buffer in ungetc if _IOSTRG flag is specified.

Alexandre Julliard julliard at winehq.org
Mon Dec 30 13:06:00 CST 2013


Module: wine
Branch: master
Commit: ed2d53a36aa413e00c577e11772915bc5de4161e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ed2d53a36aa413e00c577e11772915bc5de4161e

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Dec 30 16:55:59 2013 +0100

msvcrt: Don't write to buffer in ungetc if _IOSTRG flag is specified.

---

 dlls/msvcrt/file.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 4665e6b..04651fb 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -4713,7 +4713,15 @@ int CDECL MSVCRT_ungetc(int c, MSVCRT_FILE * file)
         file->_ptr++;
     if(file->_ptr>file->_base) {
         file->_ptr--;
-        *file->_ptr=c;
+        if(file->_flag & MSVCRT__IOSTRG) {
+            if(*file->_ptr != c) {
+                file->_ptr++;
+                MSVCRT__unlock_file(file);
+                return MSVCRT_EOF;
+            }
+        }else {
+            *file->_ptr = c;
+        }
         file->_cnt++;
         MSVCRT_clearerr(file);
         MSVCRT__unlock_file(file);




More information about the wine-cvs mailing list