NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/48183: Example in man write(2) causes endless loop



The following reply was made to PR bin/48183; it has been noted by GNATS.

From: David Laight <david%l8s.co.uk@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: bin/48183: Example in man write(2) causes endless loop
Date: Thu, 5 Sep 2013 08:10:23 +0100

 On Wed, Sep 04, 2013 at 11:30:00PM +0000, manuel%bsdstammtisch.at@localhost 
wrote:
 > >Number:         48183
 > >Category:       bin
 > >Synopsis:       Example in man write(2) causes endless loop
 ...
 > The manpage of pread says:
 > 
 > Proper loops should use
 > while ((nr = write(fd, buf, sizeof(buf))) != -1 && nr != 0)
 > 
 > which is clearly an endless loop. Say nr = 512 and the write is
 > successful, then 512 != -1 && n1 !=0  is true.
 
 That whole section is fud.
 It would only ever be a problem if the program had a buffer large enough.
 That is a 2GB buffer on a system with 32bit size_t!
 The application would also know that it was doing very large writes.
 In most programs the write() calls are small (relative to size_t).
 I suspect it is only a problem for systems with 16bit size_t and 32bit ptr.
 
 The 'partial write' support would be more useful - especially for writev().
 
        David
 
 -- 
 David Laight: david%l8s.co.uk@localhost
 


Home | Main Index | Thread Index | Old Index