2010.06.29 18:15 "Re: [Tiff] libtiff 4.0 compiler warning on x64 in tif_read.c", by Edward Lam
On Thu, Jun 17, 2010 at 6:10 PM, Edward Lam <firstname.lastname@example.org> wrote:
tif_read.c(207): warning C4244: '=': conversion from 'tmsize_t' to 'int', possible loss of data
Looking at it, it seems to me that we want "read_ahead" to be tmsize_t instead of int? Similarly, I think TIFFFillStripPartial() should take an tmsize_t instead.
It's rather doubtful, considering the purpose of the variable. Here:
// C4244 warning is more trouble than it's worth
Regardless of whether the warning is "more trouble than it's worth", I think that at least for this case, it is warranted. If you examine the mentioned line, we have a 64-bit variable (tif_scanlinesize) multiplied by 2 and 5000 added to it before being assigned to a 32-bit quantity. Are you arguing that it is invalid in the BigTIFF spec to have a scanline size of greater than 2 GiB?
IMHO, if the truncation is intentional, then we should be explicitly casting to signify that fact, ideally along with a comment as to why truncation is acceptable/correct behaviour. But that's probably a philosophical debate.