Does your test also pass on Windows?
How did you run into this -- does the bug keep a real Windows app from running on Wine? Which one?
To get your change and test accepted, please send a patch, and make the test a real wine conformance test. - Dan
Dan Kegel wrote:
Does your test also pass on Windows?
I didn't try this actual test on windows because I don't have easy access to windows. However ....
How did you run into this -- does the bug keep a real Windows app from running on Wine? Which one?
That gets complicated. I'm on Linux, cross compiling to windows using the mingw cross compiler and running the test suite on wine. One of the test programs was failing under wine but it did pass on windows xp. I tracked it down to this incorrect behaviour of the feof function.
To get your change and test accepted, please send a patch, and make the test a real wine conformance test.
Sure. I'll bang on this some more.
Erik
Dan Kegel wrote:
To get your change and test accepted, please send a patch, and make the test a real wine conformance test.
I found a test in dlls/msvcrt/tests/file.c that seems to have been mad inactive by use of a "todo_wine". Activating the test without my patch results in two failures:
file.c:244: Test failed: feof failure in binary mode file.c:244: Test failed: feof failure in ascii mode
Rerunning the test after my patch an these two failures disappeared.
Below is my new patch, which activates the test and fixes the bug.
Cheers, Erik
-------------8<-------------8<-------------8<-------------8<------------- diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 0c1e84b..866d28d 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -918,6 +918,8 @@ int CDECL MSVCRT_fseek(MSVCRT_FILE* file, long offset, int whence) if(file->_flag & MSVCRT__IORW) { file->_flag &= ~(MSVCRT__IOREAD|MSVCRT__IOWRT); } + /* Clear end of file flag */ + file->_flag &= ~MSVCRT__IOEOF; return (_lseek(file->_file,offset,whence) == -1)?-1:0; }
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index d406ae5..aa58a32 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -241,7 +241,7 @@ static void test_readmode( BOOL ascii_mode ) ok(fread(buffer,1,1,file)==0,"fread failure in %s\n", IOMODE); ok(feof(file)!=0,"feof failure in %s\n", IOMODE); ok(fseek(file,-3,SEEK_CUR)==0,"seek failure in %s\n", IOMODE); - todo_wine ok(feof(file)==0,"feof failure in %s\n", IOMODE); + ok(feof(file)==0,"feof failure in %s\n", IOMODE); ok(fread(buffer,2,1,file)==1,"fread failed in %s\n", IOMODE); ok(feof(file)==0,"feof failure in %s\n", IOMODE); ok(fread(buffer,2,1,file)==0,"fread failure in %s\n",IOMODE);
-------------8<-------------8<-------------8<-------------8<-------------