Thanks. Please don't use rand() in testcases, though. Would a constant 'a' suffice in this case?
Which app did you find this in, btw?
On Tue, Feb 3, 2009 at 1:55 PM, Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de wrote:
Hello,
it seems that in ASCII mode, fseek() may disturb reading. Appended patch adds a todo_wine.
Bye
Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt --------- Tel. 06151 162516 -------- Fax. 06151 164321 ---------- diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index 9032e51..2a72212 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -306,7 +306,8 @@ static void test_asciimode(void) { FILE *fp; char buf[64];
- int c, i, j;
int c, i, j, done, count1, count2;
/* Simple test of CR CR LF handling. Test both fgets and fread code paths, they're different! */ fp = fopen("ascii.tst", "wb");
@@ -372,6 +373,46 @@ static void test_asciimode(void) ok((c = fgetc(fp)) == '1', "fgetc fails to read next char when positioned on \r\n"); fclose(fp);
- fp= fopen("ascii.tst","wb");
- for (i=0; i<1000; i++)
{
unsigned char c = (rand()+ ' ') & 0x7f;
if (isgraph(c) || (c == ' '))
fputc(c, fp);
else if ((c == '\r') || (c == '\n'))
fputs("\r\n", fp);
}
- fclose(fp);
- done = 0;
- count1 = 0;
- fp = fopen("ascii.tst", "r");
- while (!done)
{
c= fgetc(fp);
if (c == EOF)
done = 1;
else if (isalnum(c))
count1 ++;
}
- fclose(fp);
- done = 0;
- count2 = 0;
- fp = fopen("ascii.tst", "r");
- while (!done)
{
c= fgetc(fp);
fseek(fp, 0, SEEK_CUR);
if (c == EOF)
done = 1;
else if (isalnum(c))
count2 ++;
}
- fclose(fp);
- todo_wine ok((count1 == count2), "fseek caused short read %d vs %d\n", count2, count1); unlink("ascii.tst");
}