[Bug 16982] New: fgets as first read on file followed by fread gives wrong results

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jan 17 14:28:05 CST 2009


http://bugs.winehq.org/show_bug.cgi?id=16982

           Summary: fgets as first read on file followed by fread gives
                    wrong results
           Product: Wine
           Version: 1.0.1
          Platform: Other
        OS/Version: other
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P2
         Component: msvcrt
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: lkcl at lkcl.net


Created an attachment (id=18770)
 --> (http://bugs.winehq.org/attachment.cgi?id=18770)
test case

following simple app:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
    char buffer[512];
    char *buf;
    FILE *f = fopen("tst", "w");
    fwrite("hell\n", 1, 5, f);
    fwrite("argh\n", 1, 5, f);
    fwrite("wizz\n", 1, 5, f);
    fwrite("hell\n", 1, 5, f);
    fclose(f);

    f = fopen("tst", "r");

    /*i = fread(buffer, 1, 5, f);
    printf("buffer: read %d '%s' buffer[4]: %d\n", i, buffer, buffer[4]);
    */

    buf = fgets(buffer, 512, f);
    printf("fgets: '%s'\n", buf);

    i = fread(buffer, 1, 5, f);
    printf("buffer: read %d buffer[0]: %d '%s' buffer[4]: %d\n", i,
            buffer[0], buffer, buffer[4]);

    printf("filepos: %d\n", ftell(f));
    fclose(f);
}


with builtin msvcrt:

fgets: 'hell
'
buffer: read 4 buffer[0]: 97 'argh^M' buffer[4]: 13
filepos: 11

with native msvcrt.dll:
fgets: 'hell
'
buffer: read 5 buffer[0]: 97 'argh
' buffer[4]: 10
filepos: 12


where it's going wrong is that it _says_ it's read 4 characters when actually
you asked for 5, on the fread().  that, and you get a \r instead of a \n.

also - note the filepos count - in the native run, it _does_ move along on the
\r\n so it's not the "number of characters returned" that are counted but it's
the "actual position in the real file".

euurrrgh.


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list