Eric Pouech : msvcrt: ungetc must create a buffer, even if _IONBF has been set with setvbuf.

Alexandre Julliard julliard at winehq.org
Mon Apr 25 12:47:12 CDT 2011


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

Author: Eric Pouech <eric.pouech at orange.fr>
Date:   Sun Apr 24 11:01:59 2011 +0200

msvcrt: ungetc must create a buffer, even if _IONBF has been set with setvbuf.

---

 dlls/msvcrt/file.c       |    2 +-
 dlls/msvcrt/tests/file.c |   11 -----------
 2 files changed, 1 insertions(+), 12 deletions(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index c1a7785..e34c11f 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -3622,7 +3622,7 @@ int CDECL MSVCRT_ungetc(int c, MSVCRT_FILE * file)
 {
 	if (c == MSVCRT_EOF)
 		return MSVCRT_EOF;
-	if(file->_bufsiz == 0 && !(file->_flag & MSVCRT__IONBF)) {
+	if(file->_bufsiz == 0) {
 		msvcrt_alloc_buffer(file);
 		file->_ptr++;
 	}
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c
index 5aaaaf7..0231f72 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -140,23 +140,12 @@ static void test_fileops( void )
         ok(feof(file), "feof after ungetc(EOF) did not return EOF for bufmode=%x\n", bufmodes[bufmode]);
         ok((c = fgetc(file)) == EOF, "getc did not return EOF for bufmode=%x\n", bufmodes[bufmode]);
         c = outbuffer[sizeof(outbuffer) - 1];
-        if (bufmodes[bufmode] == _IONBF) todo_wine {
         ok(ungetc(c, file) == c, "ungetc did not return its input for bufmode=%x\n", bufmodes[bufmode]);
         ok(!feof(file), "feof after ungetc returned EOF for bufmode=%x\n", bufmodes[bufmode]);
         ok((c = fgetc(file)) != EOF, "getc after ungetc returned EOF for bufmode=%x\n", bufmodes[bufmode]);
         ok(c == outbuffer[sizeof(outbuffer) - 1],
            "getc did not return ungetc'd data for bufmode=%x\n", bufmodes[bufmode]);
         ok(!feof(file), "feof after getc returned EOF prematurely for bufmode=%x\n", bufmodes[bufmode]);
-        }
-        else
-        {
-        ok(ungetc(c, file) == c, "ungetc did not return its input for bufmode=%x\n", bufmodes[bufmode]);
-        ok(!feof(file), "feof after ungetc returned EOF for bufmode=%x\n", bufmodes[bufmode]);
-        ok((c = fgetc(file)) != EOF, "getc after ungetc returned EOF for bufmode=%x\n", bufmodes[bufmode]);
-        ok(c == outbuffer[sizeof(outbuffer) - 1],
-           "getc did not return ungetc'd data for bufmode=%x\n", bufmodes[bufmode]);
-        ok(!feof(file), "feof after getc returned EOF prematurely for bufmode=%x\n", bufmodes[bufmode]);
-        }
         ok((c = fgetc(file)) == EOF, "getc did not return EOF for bufmode=%x\n", bufmodes[bufmode]);
         ok(feof(file), "feof after getc did not return EOF for bufmode=%x\n", bufmodes[bufmode]);
 




More information about the wine-cvs mailing list