Module: wine Branch: master Commit: 9a71b483d38b0d4287fe157dbfb2ef8020185588 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=9a71b483d38b0d4287fe157d...
Author: Duane Clark fpga@pacbell.net Date: Mon Sep 25 14:28:22 2006 -0700
msvcrt: fgetc needs to use unsigned parameters.
Spotted by and adapted from test written by Tobias Ringström.
---
dlls/msvcrt/file.c | 6 +++--- dlls/msvcrt/tests/file.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index d65f0d3..9f8f1ba 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -2127,12 +2127,12 @@ int CDECL MSVCRT__filbuf(MSVCRT_FILE* fi */ int CDECL MSVCRT_fgetc(MSVCRT_FILE* file) { - char *i; - int j; + unsigned char *i; + unsigned int j; do { if (file->_cnt>0) { file->_cnt--; - i = file->_ptr++; + i = (unsigned char *)file->_ptr++; j = *i; } else j = MSVCRT__filbuf(file); diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index 470a9e9..fad6ff5 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -255,6 +255,24 @@ static WCHAR* AtoW( char* p ) return buffer; }
+static void test_fgetc( void ) +{ + char* tempf; + FILE *tempfh; + int ich=0xe0, ret; + + tempf=_tempnam(".","wne"); + tempfh = fopen(tempf,"w+"); + fputc(ich, tempfh); + fputc(ich, tempfh); + rewind(tempfh); + ret = fgetc(tempfh); + ok(ich == ret, "First fgetc expected %x got %x\n", ich, ret); + ret = fgetc(tempfh); + ok(ich == ret, "Second fgetc expected %x got %x\n", ich, ret); + fclose(tempfh); +} + static void test_fgetwc( void ) { #define LLEN 512 @@ -773,6 +791,7 @@ START_TEST(file) test_fileops(); test_readmode(FALSE); /* binary mode */ test_readmode(TRUE); /* ascii mode */ + test_fgetc(); test_fgetwc(); test_ctrlz(); test_file_put_get();