2007.08.24 21:08 "[Tiff] A few libtiff4 changes", by Frank Warmerdam

2007.09.12 15:02 "Re: [Tiff] SIZEOF_UNSIGNED_LONG", by Bob Friesenhahn

On Tue, 11 Sep 2007, Frank Warmerdam wrote:

The concern I have is that this code defaults to assuming 32bit if the macro is not defined, and it produces incorrect results if the unsigned long is actually 64bit.

I wonder if we should either:

I have yet to encounter a modern system where sizeof(long) is not 8 or 4. I notice that each macro is used exactly once. It does not seem bad to me to have the macro incorporate both cases with a "runtime" test for sizeof(long). Since sizeof(long) will be a constant, 1/2 of the code will be dead code and the compiler can simply throw it away. Even if it does not throw the unused code away there should be practically no runtime overhead if it does perform the test.

There are probably more imaginative approaches than I describe above but I leave those approaches for people with an imagination. It seems that the implementation of FILL and ZERO are a form of optimization for decisions which are not very hard (most are cp[n-1]=value), could be implemented quite differently, and might actually run faster without the apparent optimization.

Bob Friesenhahn
bfriesen@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/