Hi, This patch fixes a bug in *scanf : when there is no data is the stream *scanf should return EOF not 0 (tested with fscanf and sscanf). Changelog : - return EOF when stream is empty - conformance test updated Mehmet
diff -ur CVS/wine/dlls/msvcrt/scanf.h wine/wine2/dlls/msvcrt/scanf.h --- CVS/wine/dlls/msvcrt/scanf.h Fri Dec 20 11:40:07 2002 +++ wine/wine2/dlls/msvcrt/scanf.h Thu Jan 9 22:40:31 2003 @@ -90,6 +90,8 @@ #endif /* CONSOLE */ #endif /* WIDE_SCANF */ nch = _GETC_(file); + if (nch == _EOF_) return _EOF_; + va_start(ap, format); while (*format) { /* a whitespace character in the format string causes scanf to read, Only in wine/wine2/dlls/msvcrt: scanf.o Only in wine/wine2/dlls/msvcrt/tests: msvcrt_test.exe.spec.o diff -ur CVS/wine/dlls/msvcrt/tests/scanf.c wine/wine2/dlls/msvcrt/tests/scanf.c --- CVS/wine/dlls/msvcrt/tests/scanf.c Fri Dec 20 11:40:07 2002 +++ wine/wine2/dlls/msvcrt/tests/scanf.c Thu Jan 9 22:55:28 2003 @@ -26,8 +26,14 @@ { char buffer[100]; char format[20]; - int result; + int result, ret; + /* check EOF */ + strcpy(buffer,""); + ret = sscanf(buffer, "%d", &result); + ok( ret == EOF,"sscanf returns %x instead of %x", ret, EOF ); + + /* check %x */ strcpy(buffer,"0x519"); ok( sscanf(buffer, "%x", &result) == 1, "sscanf failed" ); ok( result == 0x519,"sscanf reads %x instead of %x", result, 0x519 ); Only in wine/wine2/dlls/msvcrt/tests: scanf.c~