Add a comment to explain a cast done in file_fdopen().
This commit is contained in:
parent
a2e877d397
commit
3fe96028d2
|
@ -1132,6 +1132,24 @@ file_fdopen(int fd)
|
||||||
*
|
*
|
||||||
* If the value is too big to fit into a guint,
|
* If the value is too big to fit into a guint,
|
||||||
* just use the maximum read buffer size.
|
* just use the maximum read buffer size.
|
||||||
|
*
|
||||||
|
* On top of that, the Single UNIX Speification says that
|
||||||
|
* st_blksize is of type blksize_t, which is a *signed*
|
||||||
|
* integer type, and, at minimum, macOS 11.6 and Linux 5.14.11's
|
||||||
|
* include/uapi/asm-generic/stat.h define it as such.
|
||||||
|
*
|
||||||
|
* However, other OSes might make it unsigned, and older versions
|
||||||
|
* of OSes that currently make it signed might make it unsigned,
|
||||||
|
* so we try to avoid warnings from that.
|
||||||
|
*
|
||||||
|
* We cast MAX_READ_BUF_SIZE to long in order to avoid the
|
||||||
|
* warning, although it might introduce warnings on platforms
|
||||||
|
* where st_blocksize is unsigned; we'll deal with that if
|
||||||
|
* it ever shows up as an issue.
|
||||||
|
*
|
||||||
|
* MAX_READ_BUF_SIZE is < the largest *signed* 32-bt integer,
|
||||||
|
* so casting it to long won't turn it into a negative number.
|
||||||
|
* (We only support 32-bit and 64-bit 2's-complement platforms.)
|
||||||
*/
|
*/
|
||||||
if (st.st_blksize <= (long)MAX_READ_BUF_SIZE)
|
if (st.st_blksize <= (long)MAX_READ_BUF_SIZE)
|
||||||
want = (guint)st.st_blksize;
|
want = (guint)st.st_blksize;
|
||||||
|
|
Loading…
Reference in New Issue