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