[Bug 5930] New: Improper return value of fwrite in bytes,

bugzilla at busybox.net bugzilla at busybox.net
Thu Feb 14 05:32:16 UTC 2013


           Summary: Improper return value of fwrite in bytes,
           Product: uClibc
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: minor
          Priority: P5
         Component: stdio
        AssignedTo: unassigned at uclibc.org
        ReportedBy: upendrabaveja at gmail.com
                CC: uclibc-cvs at uclibc.org
   Estimated Hours: 0.0

fwrite(buf, sizeof(buf), 1, fp)

if any error occurs such as ENOSPC or EIO, then also fwrite return value 1, but
proper error code is set.

but from the man page of fwrite:
fwrite()  return  the number of items successfully read or written (i.e., not
the number of characters).  If an error occurs, or the end-of-file is reached,
the return value is a short item count (or zero).

But it can be seen with uclibc the return value is 1 for the above use
case in case of failure also.

This issue was not observed with uClibc version 0.9.33.

Also as seen from the code in libc/stdio/_WRITE.c the following part seems to
be culpit
 * some hidden buffered crap in the buffer.
 if (errno != EINTR && errno != EAGAIN) {
        /* do we have other "soft" errors? */

return bufsize;

Apart from other these 2 error it breaks out of the loop and return bufsize .

Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the uClibc-cvs mailing list