Duane Clark : msvcrt: fgetc needs to use unsigned parameters.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Sep 26 05:30:09 CDT 2006


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

Author: Duane Clark <fpga at 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();




More information about the wine-cvs mailing list