Update libtiff to release v4.0.2
authorAndrey Kamaev <andrey.kamaev@itseez.com>
Tue, 28 Aug 2012 07:29:40 +0000 (11:29 +0400)
committerAndrey Kamaev <andrey.kamaev@itseez.com>
Wed, 29 Aug 2012 20:23:45 +0000 (00:23 +0400)
18 files changed:
3rdparty/libtiff/CMakeLists.txt
3rdparty/libtiff/COPYRIGHT [new file with mode: 0644]
3rdparty/libtiff/ChangeLog [new file with mode: 0644]
3rdparty/libtiff/tif_aux.c
3rdparty/libtiff/tif_dir.c
3rdparty/libtiff/tif_fax3.c
3rdparty/libtiff/tif_getimage.c
3rdparty/libtiff/tif_jpeg.c
3rdparty/libtiff/tif_ojpeg.c
3rdparty/libtiff/tif_pixarlog.c
3rdparty/libtiff/tif_print.c
3rdparty/libtiff/tif_read.c
3rdparty/libtiff/tif_strip.c
3rdparty/libtiff/tif_tile.c
3rdparty/libtiff/tif_unix.c
3rdparty/libtiff/tiffio.h
3rdparty/libtiff/tiffiop.h
3rdparty/libtiff/tiffvers.h

index 6dd7956..dedcc39 100644 (file)
@@ -89,7 +89,11 @@ endif(WIN32)
 
 ocv_warnings_disable(CMAKE_C_FLAGS -Wno-unused-but-set-variable -Wmissing-prototypes -Wmissing-declarations -Wundef -Wunused -Wsign-compare
                                    -Wcast-align -Wshadow -Wno-maybe-uninitialized -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast)
-ocv_warnings_disable(CMAKE_CXX_FLAGS -Wmissing-declarations -Wunused-parameter /wd4100 /wd4244 /wd4706 /wd4127 /wd4701 /wd4018 /wd4267 /wd4306 /wd4305 /wd4312 /wd4311 /wd4703)
+ocv_warnings_disable(CMAKE_CXX_FLAGS -Wmissing-declarations -Wunused-parameter)
+ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4018 /wd4100 /wd4127 /wd4311 /wd4701 /wd4706) # vs2005
+ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4244) # vs2008
+ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4267 /wd4305 /wd4306) # vs2008 Win64
+ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4703) # vs2012
 
 if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR CV_ICC))
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
diff --git a/3rdparty/libtiff/COPYRIGHT b/3rdparty/libtiff/COPYRIGHT
new file mode 100644 (file)
index 0000000..8282186
--- /dev/null
@@ -0,0 +1,21 @@
+Copyright (c) 1988-1997 Sam Leffler
+Copyright (c) 1991-1997 Silicon Graphics, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and 
+its documentation for any purpose is hereby granted without fee, provided
+that (i) the above copyright notices and this permission notice appear in
+all copies of the software and related documentation, and (ii) the names of
+Sam Leffler and Silicon Graphics may not be used in any advertising or
+publicity relating to the software without the specific, prior written
+permission of Sam Leffler and Silicon Graphics.
+
+THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+
+IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+OF THIS SOFTWARE.
diff --git a/3rdparty/libtiff/ChangeLog b/3rdparty/libtiff/ChangeLog
new file mode 100644 (file)
index 0000000..4eab3bb
--- /dev/null
@@ -0,0 +1,5753 @@
+2012-06-15  Frank Warmerdam  <warmerdam@google.com>
+
+       *  libtiff 4.0.2 released.
+
+       * tools/tif2pdf.c, tools/tifdump.c: avoid unitialized variable
+       warnings with clang.
+
+2012-06-15  Tom Lane  <tgl@sss.pgh.pa.us>
+
+       * tools/tiff2pdf.c: Defend against integer overflows while
+       calculating required buffer sizes (CVE-2012-2113).
+
+2012-06-12  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_print.c: Be careful about printing corrupt inknames.
+
+       * libtiff/tif_fax3.c: Ensure runs array is initialized to zeros.
+
+2012-06-07  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_print.c: avoid pretty printing other fields when
+       we don't have the proper amount and type of data or if the field
+       is actually autodefined.
+
+2012-06-05  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_tile.c, libtiff/tif_strip.c: Ensure that illegal
+       ycbcrsubsampling values result in a runtime error, not just an
+       assertion.
+
+       * tests/custom_dir.c: Add testing of EXIF and custom directory
+       reading and writing.
+
+       * libtiff/tif_dir.c, libtiff/tiffio.h: Add TIFFCreateCustomDirectory()
+       and TIFFCreateEXIFDirectory() functions.
+
+       * libtiff/tif_dir.c, tif_print.c : Remove FIELD_CUSTOM handling for
+       PAGENUMBER, HALFTONEHINTS, and YCBCRSUBSAMPLING.  Implement DOTRANGE
+       differently.  This is to avoid using special TIFFGetField/TIFFSetField 
+       rules for these fields in non-image directories (like EXIF).
+
+2012-06-04  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_jpeg.c: Remove code for fixing up h_sampling and v_sampling
+       in JPEGPreDecode().  If a fixup will be done it needs to be done sooner
+       in JPEGFixupTagsSubsampling() or else buffer sized may be wrong.
+
+2012-06-01  Frank Warmerdam  <warmerdam@google.com>
+
+       * tools/tiffinfo.c: Do not try to read image data in EXIF directories.
+
+       * libtiff/tif_getimage.c: added support for _SEPARATED CMYK images.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2379
+
+       * libtiff/tif_unix.c: use strerror() to return a more specific error message
+       on failed open.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2341
+
+       * libtiff/tif_jpeg.c: Fix JPEGDecodeRaw() bugs.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2386
+
+       * tests/decode_raw.c, tests/images/quad-tile.jpg.tiff: add limited support
+       for testing jpeg in tiff image decoding including the "raw" decode interface.
+
+2012-05-31  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_jpeg.c: avoid overrunning the end of the output buffer in
+       JPEGDecodeRaw() - mostly likely to occur when there is confusion about
+       sampling values.
+
+       * libtiff/tif_read.c: Make sure tif_rawdatasize is cleared when tif_rawdata is freed.
+
+       * libtiff/tif_getimage.c: Add support for greyscale+alpha c/o Jérémie Laval.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2398
+
+2012-05-29  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_dir.c: avoid using specific set/get logic to process fields in custom directories,
+       like EXIF directories.  This fixes problems like a tag "320" existing in a custom directory getting
+       processed as if it were a colormap when it isn't really.  Damn the wide variety of argument formulations
+       to get/set functions for different tags!
+
+       * libtiff/tif_dir.c: Ensure that we keep track of when tif_rawdata
+       is a pointer into an mmap()ed file via TIFF_BUFFERMMAP flag.
+
+2012-05-24  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_pixarlog.c: Allocate working buffer one word larger since we "forward
+       accumulate" and overwrite the end by one word in at least some cases.
+
+2012-05-23  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_pixarlog.c: avoid accessing out of the lookup arrays for out of range inputs.
+
+       * tools/tiffinfo.c: initialize h=0 to avoid undefined variable for degenerate files.
+
+       * libtiff/tif_ojpeg.c: if OJPEGWriteHeader() fails once do not bother trying again on
+       the same image.
+
+       * libtiff/tif_ojpeg.c: make things more resilient in the face of files without
+       stripbytecounts or stripoffsets or where loading these fails.
+
+       * libtiff/tif_print.c: be careful about whether min/max values are singular
+       or one per sample.
+
+       * libtiff/tif_print.c: Avoid confusion about count size when printing custom fields.
+       May affect things like ISOSpeedRatings.
+
+       * libtiff/tif_dir.c: avoid one byte past end of ink names reading
+       in some cases.
+
+2012-05-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * man/TIFFGetField.3tiff: Correct the 'count' field type in the
+       example for how to retreive the value of unsupported tags.
+
+2012-03-30  Frank Warmerdam  <warmerdam@google.com>
+
+       * tif_getimage.c: Fix size overflow (zdi-can-1221,CVE-2012-1173)
+       care of Tom Lane @ Red Hat.
+
+2012-02-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.1 released.
+
+       * Update automake used to 1.11.3.
+
+       * libtiff/tiffio.h: Use double-underbar syntax in GCC printf
+       attribute specification to lessen the risk of accidental macro
+       substitution.  Patch from Vincent Torri.
+
+2012-01-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c, libtiff/tif_dirread.c: Extra caution around
+       assumption tag fetching is always successful. 
+
+       * libtiff/tif_jpeg.c: Extra caution for case where sp is NULL.
+
+2012-01-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Add support for using library symbol versioning on
+       ELF systems with the GNU linker.  Support is enabled via
+       --enable-ld-version-script.  Disabled by default for now until
+       there is a decision for how to deploy a libtiff with versioned
+       symbols after libtiff 4.0.0 was already released.
+
+2011-12-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_win32.c: Eliminate some minor 64-bit warnings in
+
+       tif_win32.c.  Patch by Edward Lam.
+
+       * configure.ac: Add libtiff private dependency on -llzma for
+       pkg-config.  Patch by Mark Brand.
+       Updated Automake to 1.11.2.
+
+2011-12-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0 released.
+
+2011-12-08  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c, libtiff/tif_read.c: more cautious checking
+       of _TIFFFillStriles() results (#gdal 4372)
+
+2011-12-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: fixes to deal with invalid files where
+       _TIFFFillStriles() fails, and we try to chop up strips (gdal #4372)
+
+       * libtiff/tif_dirread.c: fix error reporting when there is no 
+       tag information struct and name (gdal #4373)
+
+2011-10-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Update GNU libtool to 2.4.2.
+
+       * tools/tiffsplit.c (tiffcp): TIFFGetField count field should be
+       uint32 type for TIFFTAG_JPEGTABLES.  Patch by Christophe
+       Deroulers.
+
+2011-06-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def: Restore TIFFMergeFieldInfo.
+
+2011-05-31  Jim Meyering  <meyering@redhat.com>
+
+       * libtiff/tif_dirread.c (TIFFFetchStripThing): Free "data" also
+       upon failure to allocate "resizeddata".
+       * tools/tiff2ps.c (PSDataBW): Zero buffer *after* checking for
+       allocation failure, not before.
+       * libtiff/tif_ojpeg.c: plug leaks on OJPEG read failure path
+       * tools/rgb2ycbcr.c (cvtRaster): unchecked malloc
+       * libtiff/tif_jpeg.c, tools/tiff2pdf.c, tools/tiff2ps.c: mark
+       NULL-deref and possible overflow
+       * tools/tiff2pdf.c: remove decl+set of set-but-not-used local, "written"
+       * libtiff/tif_jpeg.c (JPEGInitializeLibJPEG): Remove declaration
+       and set of otherwise unused local, data_is_empty.
+       * libtiff/tif_jpeg.c (JPEGDecodeRaw) [JPEG_LIB_MK1_OR_12BIT]:
+       Diagnose out-of-memory failure and return 0 rather than
+       dereferencing NULL.
+
+2011-05-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: produce special error message for zero tag
+       directories instead of error out on the malloc(0) failure.
+
+2011-05-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Restore TIFFMergeFieldInfo() and
+       related declarations as they are in active use by libraries
+       such as libgeotiff, and work just fine.  (#2315)
+
+2011-04-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c,tiffio.h: Remove the obsolete 
+       TIFFMergeFieldInfo/TIFFFindFieldInfo/TIFFFindFieldInfoByName API. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2315
+
+       * libtiff/libtiff.def: add some missing (64bit) APIs.  
+       http://bugzilla.maptools.org/show_bug.cgi?id=2316
+
+2011-04-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0beta7 released.
+
+2011-04-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Should use AC_CANONICAL_HOST since host specifies
+       the run-time target whereas target is used to specify the final
+       output target if the package is a build tool (like a compiler),
+       which libtiff is not.  Resolves libtiff bug 2307 "Use
+       AC_CANONICAL_HOST macro".
+
+2011-04-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Support configuring TIFF_INT64_FORMAT and
+       TIFF_UINT64_FORMAT appropriately for MinGW32.
+
+       * tools/tiffdump.c (ReadDirectory): MinGW32 needs to use WIN32
+       printf conventions for 64-bit types because it uses the WIN32 CRT.
+
+       * libtiff/{tif_dumpmode.c,tif_luv.c,tif_lzw.c,tif_print.c,
+       tif_read.c,tif_strip.c,tif_thunder.c}: MinGW32 needs to use WIN32
+       printf conventions for 64-bit types because it uses the WIN32 CRT.
+
+       * tools/tiff2pdf.c (t2p_write_pdf_string): Fix printf syntax not
+       understood by WIN32 CRT.
+
+       * libtiff/tif_ojpeg.c: Fixes to compile with MinGW32 GCC.
+
+       * tools/fax2ps.c (main): Use tmpfile() rather than mkstemp() since
+       it is much more portable.  Tmpfile is included in ISO/IEC
+       9899:1990 and the WIN32 CRT.
+
+2011-03-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffset.c: add -d and -sd switches to allow operation on
+       a particular directory, not just the first (jef).
+
+2011-03-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_thunder.c: Correct potential buffer overflow with 
+       thunder encoded files with wrong bitspersample set.  The libtiff 
+       development team would like to thank Marin Barbella and TippingPoint's
+       Zero Day Initiative for reporting this vulnerability (ZDI-CAN-1004,
+       CVE-2011-1167).
+       http://bugzilla.maptools.org/show_bug.cgi?id=2300
+
+2011-03-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.h: Fix to last change allowing zero length 
+       runs at the start of a scanline - needed for legal cases.
+
+2011-03-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.h: Protect against a fax VL(n) codeword commanding 
+       a move left.  Without this, a malicious input file can generate an 
+       indefinitely large series of runs without a0 ever reaching the right 
+       margin, thus overrunning our buffer of run lengths.  Per CVE-2011-0192.
+       This is a modified version of a patch proposed by Drew Yao of Apple 
+       Product Security.  It adds an unexpected() report, and disallows the 
+       equality case, since emitting a run without increasing a0 still allows 
+       buffer overrun.
+
+2011-02-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: avoid divide by zero in degenerate case (#2296)
+
+       * tools/tiff2rgba.c: close source file on error to make leak 
+       detection easier.
+
+       * libtiff/tif_getimage.c: avoid leaks if TIFFRGBAImageBegin() fails.
+
+       http://bugzilla.maptools.org/show_bug.cgi?id=2295
+
+2011-02-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzma.c: Maintain tif_rawcc/tif_rawcp (CHUNKY_STRING_READ
+       _SUPPORT)
+
+2011-02-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure.ac, configure: Added support for --enable-chunky-strip-read
+       configure option to enable the experimental feature from a couple 
+       months ago for reading big strips in chunks. 
+
+       * configure.ac, tif_read.c, tif_readdir.c, tif_dir.h, tiffiop.h, 
+       tif_write.c, tif_print.c, tif_jpeg.c, tif_dirwrite.c, tif_write.c:
+       Implement optional support for deferring the load of strip/tile 
+       offset and size tags for optimized scanning of directories.  Enabled
+       with the --enable-defer-strile-load configure option (DEFER_STRILE_LOAD
+       #define in tif_config.h). 
+
+2011-02-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_print.c: remove unused variable.
+
+2011-02-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_win32.c: avoid error/warning buffer overrun problem
+       with non-console (popup message) builds on win32. 
+
+       http://bugzilla.maptools.org/show_bug.cgi?id=2293
+
+2011-01-24  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/{tif_dir.{h,c}, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c,
+       tif_print.c, tiff.h, tiffiop.h} : Added support for
+       TIFFTAG_SMINSAMPLEVALUE and TIFFTAG_SMAXSAMPLEVALUE to have different
+       values for each sample. Presents the min/max of all samples by default for
+       compatibility. TIFFSetField/TIFFGetField can be made to handle those tags
+       as arrays by changing the new TIFFTAG_PERSAMPLE pseudo tag.
+       http://www.asmail.be/msg0055458208.html
+
+2011-01-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_pixarlog.c: Note that tif_rawcc/tif_rawcp are not 
+       maintained.  
+
+       * libtiff/tif_zip.c: Maintain tif_rawcc/tif_rawcp when decoding 
+       for CHUNKY_STRIP_READ_SUPPORT.
+
+       * libtiff/tif_jpeg.c: ensure that rawcc and rawcp are maintained
+       during JPEGPreDecode and JPEGDecode calls.  
+       * libtiff/tif_read.c: larger read ahead for CHUNKY_STRIP_READ_SUPPORT, 
+       as compression formats like JPEG keep 16 lines interleaved in a sense 
+       and might need to touch quite a bit of data. 
+       
+       http://trac.osgeo.org/gdal/ticket/3894
+
+2011-01-03  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: Fix regressions with 2 and 3 band images
+       caused by commit on 2010-12-14.  Submitted by e-mail from
+       Even Rouault <even.rouault@mines-paris.org>
+
+2010-12-31  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_dirwrite.c: Fixed writing of TIFFTAG_REFERENCEBLACKWHITE.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2266
+
+2010-12-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c, man/tiffcp.1: Added support for specifying the
+       compression level parameter (preset) for Deflate and LZMA encoders,
+       e.g "-c lzma:p1" or "-c zip:p9".
+
+       * libtiff/tif_lzma.c: Properly set the LZMA2 compression level
+       (preset) in LZMAVSetField().
+
+2010-12-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/Makefile.am (libtiff_la_SOURCES): Added tif_lzma.c to
+       Makefile.
+
+2010-12-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, libtiff/{tif_codec.c, tif_config.h.in, tiff.h,
+       tiffiop.h, tif_lzma.c}, tools/tiffcp.c, man/tiffcp.1: Implement a new
+       TIFF compression scheme LZMA reserving a new value 34925 for
+       Compression tag. As per
+       bug http://bugzilla.maptools.org/show_bug.cgi?id=2221
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_dirread.c: tolerate some cases where
+       FIELD_COLORMAP is missing
+       http://bugzilla.maptools.org/show_bug.cgi?id=2189
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_read.c: change read_ahead to tmsize_t
+       http://bugzilla.maptools.org/show_bug.cgi?id=2222
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * configure.ac, libtiff/Makefile.am: Build tif_win32.c on
+       Windows except on Cygwin
+       http://bugzilla.maptools.org/show_bug.cgi?id=2224
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/gif2tiff.c: fix buffer overrun
+       http://bugzilla.maptools.org/show_bug.cgi?id=2270
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in order
+       to improve compatibility with various viewers
+       submitted by e-mail from Dwight Kelly <dkelly@apago.com>
+
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/fax2ps.c: be consistent with page-numbering
+       http://bugzilla.maptools.org/show_bug.cgi?id=2225
+
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_color.c: prevent crash in handling bad TIFFs
+       resolves CVE-2010-2595
+       http://bugzilla.maptools.org/show_bug.cgi?id=2208
+
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiffcrop.c: new release by Richard Nolde
+       http://bugzilla.maptools.org/show_bug.cgi?id=2004
+
+2010-12-12  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2pdf.c: fix colors for images with RGBA 
+       interleaved data
+       http://bugzilla.maptools.org/show_bug.cgi?id=2250
+
+2010-12-12  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_dirread.c: fix for Zeiss LSM and Canon CR2 files
+       http://bugzilla.maptools.org/show_bug.cgi?id=2164
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2pdf.c: remove invalid duplication for Lab
+       http://bugzilla.maptools.org/show_bug.cgi?id=2162
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: fix use of clumplines calculation
+       http://bugzilla.maptools.org/show_bug.cgi?id=2149
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/fax2ps.c: replace unsafe tmpfile() with mkstemp()
+       http://bugzilla.maptools.org/show_bug.cgi?id=2118
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_ojpeg.c, libtiff/tif_pixarlog.c,
+         libtiff/tif_zip.c: fix build errors for VC6
+       http://bugzilla.maptools.org/show_bug.cgi?id=2105
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_stream.cxx: warnings cleanup
+       http://bugzilla.maptools.org/show_bug.cgi?id=2091
+       * libtiff/tif_dirread.c: warnings cleanup
+       http://bugzilla.maptools.org/show_bug.cgi?id=2092
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2pdf.c: add fill-page option
+       http://bugzilla.maptools.org/show_bug.cgi?id=2051
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_dirread.c: modify warnings
+       http://bugzilla.maptools.org/show_bug.cgi?id=2016
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_ojpeg.c: fix buffer overflow on problem data
+        http://bugzilla.maptools.org/show_bug.cgi?id=1999
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiffinfoce.c: strip byte counts are uint64* now
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+        * libtiff/tif_ojpeg.c: fix crash when reading a TIFF with a zero
+        or missing byte-count tag
+        * tools/tiffsplit.c: abort when reading a TIFF without a byte-count
+        per http://bugzilla.maptools.org/show_bug.cgi?id=1996
+
+2010-12-08  Lee Howard <faxguy@howardsilvan.com>
+
+        * libtiff/tif_dirread.c: fix crash when reading a badly-constructed
+        TIFF per http://bugzilla.maptools.org/show_bug.cgi?id=1994
+
+2010-12-06  Lee Howard <faxguy@howardsilvan.com>
+
+        * libtiff/tif_open.c: Fix mode check before opening a file.
+        http://bugzilla.maptools.org/show_bug.cgi?id=1906
+
+2010-11-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff-4.pc.in: Added libtiff pkg-config .pc file support.
+       Patch by Vincent Torri.
+
+2010-10-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffinfo.c: avoid direct reference to _TIFFerrorHandler.
+       
+       * libtiff/tif_config.vc.h: define snprintf to _snprintf for tiff2pdf.
+
+       * libtiff/libtiff.def: export _TIFFCheckMalloc for tools.
+
+2010-09-25  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2ps.c: improvements and enhancements from Richard Nolde
+       with additional command line options for Document Title,
+       Document Creator, and Page Orientation
+
+2010-07-13  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c: Patch from Richard Nolde to avoid a
+       potentially unterminated buffer due to using an exceptionally long
+       file name.
+
+2010-07-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Fixed ID buffer filling in
+       t2p_write_pdf_trailer(), thanks to Dmitry V. Levin.
+
+2010-07-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Really reset the tag count in CheckDirCount()
+       to expected value as the warning message suggests. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=1963
+
+2010-07-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c: Properly handle TIFFTAG_PAGENUMBER,
+       TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING, TIFFTAG_DOTRANGE
+       which should be set by value.
+
+       * libtiff/tif_dirinfo.c: Don't use assertions in _TIFFFieldWithTag()
+       and _TIFFFieldWithName() if the tag is not found in the tag table.
+       This should be normal situation and returned NULL value should be
+       properly handled by the caller.
+
+2010-07-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_getimage.c: Avoid wrong math du to the signed/unsigned
+       integer type conversions. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2207
+
+       * tools/{tiff2bw.c, thumbnail.c, pal2rgb.c}: Fix the count for
+       WhitePoint tag as per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2042
+
+       * libtiff/tif_getimage.c: Check the number of samples per pixel when
+       working with YCbCr image in PickContigCase(). As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2216
+
+       * libtiff/tif_dir.c: Set the bogus post-decoding hook when processing
+       TIFFTAG_BITSPERSAMPLE in _TIFFVSetField() for the case of 8 bit when
+       we don't need any post-processing. That helps to reset the hook if we
+       previously set this field to some other value and the hook was
+       initialized accordingly. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2035
+
+2010-07-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffgt.c: Properly check the raster buffer allocations for
+       integer overflows. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2108
+
+       * m4/acinclude.m4: Update GL/GLU/GLUt/Pthread macros from the
+       upstream.
+
+       * libtiff/{tif_aux.c, tif_strip.c, tif_tile.c, tiffiop.h}: Move
+       multiply_32() and multiply_64() functions into tif_aux.c file and
+       rename them into _TIFFMultiply32() and _TIFFMultiply64() respectively.
+
+2010-06-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Better generation of ID field in
+       t2p_write_pdf_trailer(). Get rid of GCC aliasing warnings.
+
+       * tools/tiff2pdf.c: Fixed computation of the tile buffer size when
+       converting JPEG encoded tiles.
+
+       * tools/tiff2pdf.c: Better handling of string fields, use static
+       string buffers instead of dynamically allocated, use strncpy() instead
+       of strcpy(), control the string lengths.
+
+2010-06-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Initialize buffer arrays with zero to avoid
+       referencing to uninitialized memory in some cases (e.g. when tile size
+       set bigger than the image size).
+
+2010-06-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c: Patch from Richard Nolde. Reject YCbCr
+       subsampled data since tiffcrop currently doesn't support it.  Fix
+       JPEG support.
+
+2010-06-13  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Fix invocation of tag compare function (#2201)
+
+       * tools/tiff2pdf.c: Fix assorted bugs in tiff2pdf: missing "return" 
+       in t2p_read_tiff_size() causes t2p->tiff_datasize to be set entirely 
+       wrong for COMPRESSION_JPEG case, resulting in memory stomp if actual 
+       size is larger.  Also, there are a bunch of places that try to 
+       memset() a malloc'd buffer before checking for malloc failure, which 
+       would result in core dump if there actually were a failure. (#2211)
+
+2010-06-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiffiop.h (TIFFSafeMultiply): Need more castings to
+       avoid compiler warnings if parameter types are not sign
+       consistent.
+
+       * libtiff 4.0.0alpha6 released.
+
+       * tools/tiffcrop.c: Applied patch from Richard Nolde: Corrected
+       European page size dimensions.  Added an option to allow the user
+       to specify a custom page size on the command line.  Fix the case
+       where a page size specified with a fractional part was being
+       coerced to an integer by retyping the variables that define the
+       paper size.
+
+       * html/index.html: Update for the 3.9.3 release.
+
+       * tools/tiffcp.c (tiffcp): Applied Tom Lane's patch to reject
+       YCbCr subsampled data since tiffcp currently doesn't support it.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2097
+
+       * Update libtool to version 2.2.10.
+
+2010-06-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiffiop.h (TIFFSafeMultiply): Work properly if
+       multiplier is zero.
+
+2010-06-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_fax3.c (Fax3SetupState): Yesterday's fix for
+       CVE-2010-1411 was not complete.
+
+       * libtiff/tiffiop.h (TIFFSafeMultiply): New macro to safely
+       multiply two integers.  Returns zero if there is an integer
+       overflow.
+
+       * tools/tiffcp.c (main): tiffcp should not leak memory if an error
+       is reported when reading the input file.
+
+2010-06-08  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Update libtool to version 2.2.8.
+
+       * libtiff/tif_fax3.c (Fax3SetupState): Avoid under-allocation of
+       buffer due to integer overflow in TIFFroundup() and several other
+       potential overflows.  In conjunction with the fix to TIFFhowmany(),
+       fixes CVE-2010-1411.
+
+       * libtiff/tiffiop.h (TIFFhowmany): Return zero if parameters would
+       result in an integer overflow. This causes TIFFroundup() to also
+       return zero if there would be an integer overflow.
+
+       * contrib: Add an emacs formatting mode footer to all source files
+       so that emacs can be effectively used.
+
+2010-06-03  Oliver Chen Feng <scip8183@gmail.com>
+
+       * libtiff/tools/tiffcp.c: add a new option -x to force merged tiff
+       file PAGENUMBER value in sequence for users who care the page
+       sequence, this will also prevent tiff2pdf from creating pdf file from
+       the merged tiff file with wrong page sequence.
+
+2010-05-08  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_dirread.c: Restored TIFFReadDirEntryFloat function in order
+       to add missing TIFF_SETGET_FLOAT case to TIFFFetchNormalTag.
+       * libtiff/tif_dirinfo.c: Use correct set_field_type for
+       TIFFTAG_PIXAR_FOVCOT so it is readable again (regression from 3.9.2).
+       http://bugzilla.maptools.org/show_bug.cgi?id=2192
+
+2010-05-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Ensure that quality is always set in 
+       JPEGPreEncode(), not just when we want to output local tables.  
+       Otherwise the quality used during compression may not be right and
+       might not match the tables in the tables tag.   This bug only occurs
+       when seeking between directories in the midst of writing blocks.
+       http://trac.osgeo.org/gdal/ticket/3539
+       
+2010-05-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * html/man/TIFFGetField.3tiff.html, html/man/TIFFSetField.3tiff.html:
+       Regenerated from the source.
+
+2010-05-05  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_print.c: Fixed printing of TIFFTAG_REFERENCEBLACKWHITE which
+       had stopped working. Also made it always print 6 floats instead of
+       2*SamplesPerPixel.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2191
+       http://bugzilla.maptools.org/show_bug.cgi?id=2186
+       * man/TIFFGetField.3tiff, man/TIFFSetField.3tiff: Fixed doc to reflect the
+       fact that libtiff considers TIFFTAG_REFERENCEBLACKWHITE to be 6 floats.
+
+2010-05-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Fix to use memcmp(), not memcpy() when checking
+       if the jpeg table was written.  This is a fix for the last fix on 04-21.
+
+2010-04-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: avoid preparing jpeg tables everytime 
+       JPEGSetupEncode() is called if the tables already seem to be 
+       established.  This prevents spurious updates and rewriting of 
+       directories with jpegtables when doing updates to existing images.
+       http://trac.osgeo.org/gdal/ticket/3539
+
+2010-04-20  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_dirinfo.c: Use correct set_field_type for
+       TIFFTAG_PIXAR_IMAGEFULLWIDTH, TIFFTAG_PIXAR_IMAGEFULLLENGTH,
+       TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN and TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA.
+       They were unreadable with TIFF_SETGET_UNDEFINED, a regression from 3.9.2.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2139
+
+2010-04-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_dir.c (_TIFFVSetField): Add a special error case for
+       when the tag count value is zero.  Error handling is still a
+       regression since in 3.9.2, empty tags are skipped (with a warning)
+       rather than returning a hard error and refusing to read the file.
+
+       * tools/ppm2tiff.c (main): While case for parsing comment line
+       requires extra parenthesis to work as expected.  Reported by
+       Thomas Sinclair.
+
+2010-04-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_read.c (primarily): Add support for 
+       CHUNKY_STRIP_READ_SUPPORT where large strips are
+       read in chunks for applications using TIFFReadScanline().
+       This is intended to make it more practical work with very
+       large compressed one-strip files.   Feature is off by default.
+       Enable by defining CHUNK_STRIP_READ_SUPPORT as a macro.
+       http://trac.osgeo.org/gdal/ticket/3514
+
+2010-03-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_flush.c: Use TIFFRewriteDirectory() when flushing
+       directories so previously placed directories will be migrated to
+       the end of file if needed.
+
+2010-03-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c: change type of dec_bitsleft field to uint64
+       to support operating on strips/tiles of more than 256MB.
+       http://trac.osgeo.org/gdal/ticket/3512
+
+2010-03-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_aux.c (_TIFFCheckRealloc): Improve error message so
+       that it is clearly a memory allocation error message, and also
+       includes the size of the allocation request.
+
+2010-02-22  Lee Howard  <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: Do not generate a JPEGTables tag when creating
+       the JPEG TIFF as is is not required in order to prevent it from 
+       being unused and filled with invalid data.  (Leave it to be 
+       generated by later activity.)
+       http://bugzilla.maptools.org/show_bug.cgi?id=2135
+       * tools/tiff2pdf.c: Write the JPEG SOI headers into the TIFF strip 
+       data rather than skipping them.  This fixes the ability to view in
+       Acrobat Reader, Evince, and Ghostscript.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2135
+       * libtiff/tif_fax3.c: Don't return error on badly-terminated MMR
+       strips.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2029
+
+2009-12-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Made JPEGDecodeRaw() check for buffer overruns.
+       Made so that when working with downsampled images a stub function 
+       reporting an error is used for tif_decoderow.  We cannot meaningfully
+       support reading scanlines in this situation.  (#1936)
+
+       * libtiff/tif_jpeg.c: Ensure that tif_scanlinesize is computed after
+       resetting of the upsampling values (gdal:#3259).
+       http://bugzilla.maptools.org/show_bug.cgi?id=1936
+
+2009-11-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * contrib/dbs/tiff-grayscale.c, contrib/tif-palette.c, 
+       tools/ras2tiff.c: Fix resource leaks on error.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2121
+
+       * libtiff/tif_{aux.c,dir.c,dir.h,dirinfo.c}: Return to handling 
+       TIFFTAG_REFERENCEBLACKWHITE as a field in the TIFF directory instead
+       of as a custom(generic) field to avoid a potential reentrancy problem.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2125
+       
+       * libtiff/tif_color.c, libtiff/tif_getimage.c, libtiff/tiffio.h,
+       man/TIFFcolor.3tiff: Make TIFFDisplay argument in TIFFCIELabToRGBInit 
+       const, and display_sRGB static and const.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2124
+
+2009-11-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0alpha5 released.
+
+2009-11-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c: Updated tiffcrop from Richard Nolde.  This
+       version has undergone substantial testing with arbitrary sample
+       bit depths.  Also eliminates GCC compilation warnings.
+
+2009-11-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * port/libport.h: Add extern declarations for getopt standard
+       globals.
+
+2009-10-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_lzw.c (LZWDecode, LZWDecodeCompat): Fix warnings
+       noticed in 64-bit build of libtiff with Visual Studio 2005.
+       Resolves "Bug 2067 - Visual Studio 2005 64-bit warnings in
+       tif_lzw.c", http://bugzilla.maptools.org/show_bug.cgi?id=2067
+
+       * libtiff/tif_pixarlog.c (PixarLogEncode): Fix non-important
+       warning noticed in Visual Studio 2005 build. Resolves "Bug 2068 -
+       Visual Studio 2005 64-bit warning in tif_pixarlog.c",
+       http://bugzilla.maptools.org/show_bug.cgi?id=2068
+
+2009-10-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_dirread.c: Eliminate GCC "dereferencing type-punned
+       pointer" warnings.
+
+2009-10-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * html/tools.html: Add manual page links, and a summary
+       description of tiffcrop.
+
+2009-10-07  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: x86_64 should use the same fill order as i386.
+
+2009-09-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop from Richard
+       Nolde.  Major updates to add significant functionality for reading
+       and writing tile based images with bit depths not a multiple of 8
+       which cannot be handled by tiffcp.
+
+2009-09-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_ojpeg.c (OJPEGWriteHeaderInfo): IJG JPEG 7 needs
+       do_fancy_upsampling=FALSE in order to read raw data.  Resolves
+       "Bug 2090 - OJPEG crash with libjpeg v7".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2090
+
+2009-09-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: Fixed error recognition handling in RGBA
+       interface when stoponerror is set. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2071
+
+2009-08-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/{tiffcrop.c,tiffgt.c}: Applied patch from Oden Eriksson to
+       fix build with gcc when using the "-Wformat
+       -Werror=format-security" flags.
+
+2009-08-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/{bmp2tiff_palette.sh, bmp2tiff_rgb.sh, gif2tiff.sh,
+       ppm2tiff_pbm.sh, ppm2tiff_pgm.sh, ppm2tiff_ppm.sh}: Additional
+       utilities tests.
+
+2009-08-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffinfo.c: tiffinfo should return error status to the
+       caller.  Register a private error callback to accomplish that.
+
+       * test/Makefile.am (TIFFIMAGES): Add test images in BMP, GIF, and
+       PNM formats so that we will be able to test more of the tools.
+       While adding these test images I notice that bmp2tiff and gif2tiff
+       only support ancient versions of their respective formats.
+
+2009-08-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0alpha4 released.
+
+       * HOWTO-RELEASE: Improved release instructions.
+
+2009-08-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * man/{TIFFClose.3tiff,raw2tiff.1,tiffcmp.1,tiffsplit.1}: Applied
+       fixes for "Bug 2023 - nroff errors in manual pages".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2023
+
+       * tools/{rgb2ycbcr.c, tiff2rgba.c}: Applied fixes for "Bug 2079 -
+       CVE-2009-2347 libtiff: integer overflows in various inter-color
+       space conversion tools".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2079
+
+       * libtiff/tif_print.c (TIFFPrintDirectory): Apply fix from Jay
+       Berkenbilt for "Bug 2024 - possible null pointer dereference with
+       one-line fix".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2024
+
+       * libtiff/tif_dirread.c (TIFFReadCustomDirectory): Apply patch
+       from Jay Berkenbilt for "Bug 1895 - logic error in tif_dirread.c:
+       segfault after setting tdir_tag = IGNORE".      
+       http://bugzilla.maptools.org/show_bug.cgi?id=1895
+
+2009-08-23  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/Makefile.am, test/tiffcrop*.sh: Split previously existing
+       tiffcrop.sh into a collection of many specific tests.  Re-wrote
+       all of the existing tests to be based on some simple shell
+       functions.  Make distcheck works again.
+       
+       Export certain variables (MAKE, MAKEFLAGS, MEMCHECK) to tests and
+       added 'memcheck' and 'ptrcheck' targets to make it easy to run the
+       tests under valgrind.
+
+2009-08-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/tiffcp-logluv.sh: Fix test so that it works with a VPATH
+       build.
+
+       * test/Makefile.am (AUTOMAKE_OPTIONS): Colorized tests was not
+       actually activated since it needed to be enabled in this
+       Makefile.am.  Also activated parallel-tests mode since it offers
+       useful features such as per-test .log files and a summary test
+       report .log file.
+
+2009-08-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Updated autotools.  Autoconf 2.64, Automake 1.11,
+       libtool 2.2.6.  Enabled support for silent build rules
+       (--enable-silent-rules or 'make V=0') and colorized tests.
+
+       * html/{index.html, v3.9.0.html}: Update for 3.9.0 release.
+
+2009-06-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tests/tiffcp-logluv.sh: minimal testing of sgilog compression.
+
+       * tools/tiffcp.c: add -c sgilog support.
+
+       * libtiff/tif_luv.c: correct return codes from encoderow to be
+       1 on success instead of zero.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2069
+
+       * libtiff/tif_lzw.c: back out patch from #2065 and apply patch from 
+       #1085 for a better underflow fix that errors properly.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2065
+       http://bugzilla.maptools.org/show_bug.cgi?id=1985
+
+2009-06-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_strip.c: Remove an inappropriate assertion that often
+       fails on oddly sized 12bit jpeg compressed ycbcr images.
+
+2009-06-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c: Fix buffer underflow bug. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2065
+
+2009-06-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure.ac, libtiff/tif_jpeg.c, libtiff/tif_jpeg_12.c: add support
+       for dual mode 8/12 bit jpeg support. 
+
+2009-06-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_write.c: do not override the planar configuration to be
+       contig for one sample files if planar configuration is already set.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2057
+
+2009-06-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def: Add TIFFUnsetField.
+
+2009-05-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/{tif_jpeg.c,tif_ojpeg.c,tif_getimage.c}: Fixed various
+       error reports to use "%s" as format string.
+       http://trac.osgeo.org/gdal/ticket/2976
+       
+2009-03-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/{tif_fax3.c,tif_jpeg.c,tif_ojpeg.c}: Fix printdir chaining
+       for some codecs (#2020).
+
+2009-02-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_luv.c: Fix handling of tiled logluv images. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2005
+
+2009-02-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Improve allocation safety when allocated
+       buffer for large tags.  (#1998)  Related to (#1993)
+
+2009-02-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffcrop.c: Don't default image->res_unit to INCH.  Now the
+       test suite should pass.
+
+2009-02-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Re-incorporated a sanity check on tag size,
+       but at the 2GB boundary to avoid overflow on 32bit systems. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=1993
+
+       * libtiff/tif_dirread.c: Remove some assertions that blow due to
+       corrupt files rather than in response to library internal 
+       inconsistencies.  
+       http://bugzilla.maptools.org/show_bug.cgi?id=1995
+       http://bugzilla.maptools.org/show_bug.cgi?id=1991
+
+       * libtiff/tif_dirread.c: Fixed testing for failed result from
+       TIFFReadDirectoryFindFieldInfo().  
+       http://bugzilla.maptools.org/show_bug.cgi?id=1992
+
+2009-01-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_predict.c: Add support for 32bit integer horz. predictors.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1911
+
+       * libtiff/tif_dirwrite.c: Fix byte swapping of next directory offset.
+       
+       http://bugzilla.maptools.org/show_bug.cgi?id=1924
+
+       * tools/tiffcrop.c: initialize xres/yres values. 
+
+       * test/*.sh - default ${srcdir} to local directory.
+
+       * test/common.sh - start verbose mode after common settings. 
+
+       * libtiff/tif_dirinfo.c: Replace lfind() with local equivelent to 
+       avoid type mismatches on different platforms. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=1889
+
+2009-01-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/{fax2tiff.c,thumbnail.c,tiff2pdf.c,tiff2ps.c,tiffdump.c,
+       tiffsplit.c}: avoid warnings, mostly 32bit/64bit casting issues.
+
+       * port,tools: Introduce libport.h, and include in tools if NEED_LIBPORT
+       defined, primarily to reduce prototype warnings on windows. 
+
+       * libtiff/tif_dirinfo.c,tif_dirread.c: Avoid warnings
+       about unused parameters, and uninitialized variables.
+
+2009-01-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/common.sh: Execute tests like 'make VERBOSE=TRUE check' in
+       order to trace full execution detail while executing the test suite.
+
+2009-01-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffsplit.c: fix sampleformat to be shortv instead of longv.
+
+2009-01-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/Makefile.am (CLEANFILES): Make sure that test output files
+       are removed by 'make clean'
+
+       * Update autotools for 4.0.0 beta3
+
+       * 4.0.0 beta3 produced.
+
+2009-01-12  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/tiffcrop.sh: New test script for tiffcrop from Richard
+       Nolde.
+
+       * tools/tiff2ps.c: Remove spurious message to stderr.
+
+2009-01-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiff2ps.c: Incorporated significant functionality update
+       from Richard Nolde.  In particular, support for rotating the image
+       by 90, 180, 270, and 'auto' has been added.
+
+       * man/tiffcrop.1: Incorporated documentation updates from Richard
+       Nolde.
+
+       * tools/tiffcrop.c: Incorporated significant functionality update
+       from Richard Nolde.
+
+2008-12-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiffio.h: GCC will now validate format specifications
+       for TIFFError(), TIFFErrorExt(), TIFFWarning(), and
+       TIFFWarningExt() in order to reveal bugs.
+
+       * Many fixes throughout to work better as a 64-bit build. 
+
+2008-12-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/{tiff2pdf.c, tiff2ps.c, tiffinfo.c}: Offset and length
+       tags now require 64-bit parameter rather than 32-bit.
+
+       * libtiff/tif_dirread.c: Fixed issues with unaligned access to
+       64-bit values.
+
+       * tools/thumbnail.c: Eliminate crash noticed while running test
+       suite.
+
+2008-12-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_ojpeg.c (OJPEGLibjpegJpegSourceMgrFillInputBuffer):
+       Initialize stack variables to avoid compiler warning.
+
+       * tools/tiffinfoce.c (main): Use toff_t for offset type when
+       retrieving offset of EXIF IFD.
+
+       * libtiff/tiffio.h: Undeprecate toff_t and restore its use in the
+       TIFFClientOpen() callback and other external function definitions.
+
+       * tools/tiffinfo.c (main): Offset to EXIF IFD requires a 64-bit
+       type now.  Fixes crash when dumping files containing an EXIF IFD.
+
+       * m4/libtool.m4: Update to libtool 2.2.6.
+
+2008-12-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c, tiffio.h: Introduce TIFFUnsetField() function.
+
+       * libtiff/tif_jpeg.c: Avoid errors if the application writes a full
+       strip for the last partial strip in a jpeg compressed file.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1981
+
+2008-10-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_flush.c: Make sure that BEENWRITING is cleared when
+       we take the shortcut to only update the strip/tile offsets in place.
+       http://trac.osgeo.org/gdal/ticket/2621
+
+2008-10-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_jbig.c: Support the JBIG-KIT 2.0 (compatibility with
+       the older versions retained).
+
+2008-10-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Add #ifdefs for changes needed if using
+       IPP enabled version of libjpeg from Intel. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=1951
+
+2008-09-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Use byte counts of proper size (uint64).
+       Required for libtiff 4.0.
+
+       * tools/tiffsplit.c: Use dynamically allocated array instead of static
+       when constructing output file names.
+
+2008-09-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Get rid of unsafe strcpy()/strcat() calls when
+       doing the filename/path construction.
+
+       * tools/tiff2pdf.c: More appropriate format string in
+       t2p_write_pdf_string(); avoid signed/unsigned mismatch.
+
+       * libtiff/tif_lzw.c: Properly zero out the codetable. As per bug
+
+       http://bugzilla.maptools.org/show_bug.cgi?id=1929
+
+       * libtiff/tif_lzw.c: Properly zero out the string table. Fixes
+       CVE-2008-2327 security issue.
+
+2008-09-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Avoid unused TIFFReadDirEntryFloat() function.
+
+       * libtiff/tif_dirwrite.c: modified to write IFDs as either IFD8 or IFD
+       depending on whether the file is bigtiff or classic tiff.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1917
+
+2008-08-12  Edward Lam  <edward@sidefx.com>
+
+       * tools/tiffdump.c: When compiling for Microsoft Windows, apply
+       consistent (__int64) casting when testing if _lseeki64 has
+       successfully seeked as requested.  This is necessary for large
+       file support to work since off_t is only 32-bit.
+
+2008-07-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_strip.c: Replace assertions related to samplesperpixel != 3 or 
+       the subsampling values not being 1, 2 or 4 (for jpeg compressed images)
+       with control logic to return runtime errors (c/o Even Rouault) (#1927).
+
+2008-06-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffcrop.c: Fix some portability problems.
+
+       * libtiff/tif_ojpeg.c: Use same jpeg/win32 boolean/FAR hacks as are
+       used in tif_jpeg.c.
+
+       * libtiff/tif_win32.c: Ensure TIFFOpenW() uses same FILE_SHARE flags
+       as TIFFOpen().
+
+2008-06-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: Fix alignment problems affecting architectures
+       like Sparc/Solaris.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1892
+
+2008-05-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff.def: Add TIFFFindField
+       http://bugzilla.maptools.org/show_bug.cgi?id=1891
+
+2008-05-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_config.*.h, tiffconf.*.h: Remove SIZEOF_LONG definition, unused.
+
+       * li2008-04-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+btiff/tif_win32.c: Replace custom Win32 memory api with generic
+       POSIX one.  No apparent value to use of GlobalAlloc() in the modern
+       age.  http://bugzilla.maptools.org/show_bug.cgi?id=1885
+
+       * libtiff/tiffconf.vc.h: Added JBIG_SUPPORT and MDI_SUPPORT items
+       in windows version (care of Edward Lam).
+
+2008-05-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_codec.c: Avoid NULL pointer dereferencing for exotic 
+       compression codec codes.
+
+       * tif_dirwrite.c: fix potential memory leak.
+
+       * tif_dirread.c: Fix unchecked malloc result.
+2008-05-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test {tiff2pdf.sh tiff2ps-EPS1.sh tiff2ps-PS1.sh tiff2ps-PS2.sh
+       tiff2ps-PS3.sh tiffcp-g3-1d-fill.sh tiffcp-g3-1d.sh
+       tiffcp-g3-2d-fill.sh tiffcp-g3-2d.sh tiffcp-g3.sh tiffcp-g4.sh
+       tiffcp-split-join.sh tiffcp-split.sh tiffcp-thumbnail.sh
+       tiffdump.sh tiffinfo.sh}: Added more test scripts based on
+       suggestions from Lee Howard posted to the tiff list on 13 Sep
+       2007.
+
+2008-05-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.c: Add an assert in an effort to detect a
+       possible runtime problem reported by coverity.
+
+       * contrib/iptcutil/iptcutil.c: Fixed memory leak of str.
+
+       * tools/tiffcrop.c, man/tiffcrop.1: Major update from Richard Nolde.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1888
+
+       * tools/tiffdither.c: remove dead onestrip code.  avoid memory leak.
+
+       * tools/rgb2ycbcr.c: fix memory leak of raster buffer.
+
+       * tools/tiffcp.c: Simplify inknames code to avoid pointless test.
+       Cleanup scanline allocation to avoid coverity warning.
+
+       * tools/thumbnail.c: Check for TIFFOpen() failure.
+
+2008-05-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Use TIFF_SETGET_ASCII for PIXAR_TEXTUREFORMAT
+       and PIXAR_WRAPMODES instead of TIFF_SETGET_UNDEFINED.  Not exactly clear
+       why this is needed. 
+
+2008-05-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Makefile.am (ACLOCAL_AMFLAGS): Libtool 2.2.4 does not like
+       "ACLOCAL_AMFLAGS=-I ./m4".  It wants "ACLOCAL_AMFLAGS=-I m4".
+
+2008-04-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * test/: Test suite updated. Everything is passed now.
+
+       * libtiff/tif_dirinfo.c: Fixed description of the
+       TIFFTAG_NUMBEROFINKS tag.
+
+2008-04-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirread.c, tif_dirwrite.c, tiffiop.h}:
+       Get rid of some of "dereferencing type-punned" warnings by converting
+       tdir_offset field of TIFFDirEntry structure into union.
+
+2008-04-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_flush.c, tif_dirwrite.c, tiffio.h, tiffiop.h}:
+       TIFFRewriteField() renamed into _TIFFRewriteField() and moved out
+       from the public interface. Type of its 'count' parameter changed
+       from uint32 to tmsize_t.
+
+       * /libtiff/tiffiop.h: Make tif_nfields and tif_nfieldscompat fields
+       of the tiff structure have the size_t type instead of uint32.
+
+2008-04-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffdump.c: Added support for MSVS 6.0.
+
+       * libtiff/tif_dirread.c: Use custom functions _TIFFUInt64ToFloat()
+       and _TIFFUInt64ToDouble() to convert 64-bit integers into floating
+       point values on MSVS 6.0 platform.
+
+2008-03-14  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirread.c: Removed sanity checks on tags larger than 4MB in
+       TIFFReadDirEntryArray() since they are interfering with seemingly 
+       legitimate files.  http://trac.osgeo.org/gdal/ticket/2005
+
+2008-02-09  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Added handling for the case of number of values for 
+       PageNumber tag different from 2 (previously resulted in an assert 
+       indicating lack of handling and was forgotten about)
+
+2008-02-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Do not try to fixup subsampling tags based on 
+       the actual jpeg data stream if the first strip/tile has zero size.
+       This is the case when GDAL creates a new file with zero sizes, closes
+       and reopens it.
+
+2008-01-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2ps.c: fix up 64bit issues (from Edward Lam). 
+
+2008-01-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: #ifdef out lots of unused functions.
+
+       * Makefile.vc, libtiff/Makefile.vc, tools/Makefile.vc: Improve clean
+       targets.
+
+       * tools/tiffinfo.c, tools/tiffcmp.c, tools/gif2tiff.c, tools/bmp2tiff.c
+       tools/tiff2pdf.c: Fix 64-bit warnings when compiling under MSVC 2005 
+       (x64). 
+
+       * tools/tiffset.c: Changes to reflect the fact that TIFFFieldWithTag() 
+       and TIFFFieldWithName() now return TIFFField pointers instead of
+       TIFFFieldInfo pointers.
+
+       * tools/tiffdump.c: Added ssize_t typedef on Windows since it doesn't 
+       exist. This makes it compile again on Windows
+
+       * tif_aux.c, tif_getimage.c, tif_next.c, tif_predict.c, tif_win32.c,
+       tiffconf.vc.h: Various 64bit fixes from Edward Lam identified on win64.
+
+       * test/rewrite_tag.c: New test for TIFFRewriteField().
+
+2007-12-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: Added TIFFRewriteField().  This new function
+       rewrites one field "on disk" updating an existing directory 
+       entry.  Lots of limitations still...
+
+       * tiffiop.h, tif_write.c, tif_dirread.c, tif_flush.c: Keep track of 
+       TIFF_DIRTYSTRIP separately from TIFF_DIRTYDIRECT to indicate that 
+       the strip offset/size values are dirty but nothing else about the 
+       directory is dirty.  In flush handle "just stripmaps dirty" as a
+       special case that just rewrites these values without otherwise 
+       modifying the directory on disk using TIFFRewriteField().  
+
+       We also modify logic so that in update mode the directory is not
+       marked dirty on read, but only when something is changed.  This
+       means we need to keep track of updates to the stripmap stuff in 
+       TIFFAppendToStrip().
+
+2007-12-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_jpeg.c: Improve ability to switch between encoding and decoding
+       in the jpeg code (gdal bug #2033).
+
+2007-11-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dir.c, tif_dirread.c, tif_dirwrite.c, tif_read.c, tif_write.c,
+       tiffiop.h: Added TIFF_BUF4WRITE flag to indicate if contents of the 
+       rawcp/rawcc buffer are for writing and thus may require flushing.
+       Necessary to distinguish whether they need to be written to disk when
+       in mixed read/write mode and doing a mixture of writing followed by
+       reading.  http://trac.osgeo.org/gdal/ticket/1758
+
+2007-11-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.com, libtiff/tif_vms.c: Better OpenVMS support. Patches
+       from Alexey Chupahin.
+
+2007-11-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_write.c: Rip out the fancy logic in TIFFAppendToStrip() for 
+       establishing if an existing tile can be rewritten to the same location 
+       by comparing the current size to all the other blocks in the same 
+       directory.  This is dangerous in many situations and can easily 
+       corrupt a file.  (observed in esoteric GDAL situation that's hard to
+       document).  This change involves leaving the stripbytecount[] values 
+       unaltered till TIFFAppendToStrip().  Now we only write a block back
+       to the same location it used to be at if the new data is the same
+       size or smaller - otherwise we move it to the end of file.
+
+       * tif_dirwrite.c: Try to avoid writing out a full readbuffer of tile
+       data when writing the directory just because we have BEENWRITING at
+       some point in the past.  This was causing odd junk to be written out
+       in a tile of data when a single tile had an interleaving of reading 
+       and writing with reading last.  (highlighted by gdal 
+       autotest/gcore/tif_write.py test 7. 
+
+       * tif_predict.c: use working buffer in PredictorEncodeTile to avoid
+       modifying callers buffer. 
+       http://trac.osgeo.org/gdal/ticket/1965
+
+       * tif_predict.c/h: more fixes related to last item, keeping a 
+       distinct pfunc for encode and decode cases as these were getting
+       mixed up sometimes.
+       http://trac.osgeo.org/gdal/ticket/1948
+
+2007-11-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_predict.c/h, tif_lzw.c, tif_zip.c: Improvements so that 
+       predictor based encoding and decoding works in read-write update
+       mode properly. 
+       http://trac.osgeo.org/gdal/ticket/1948
+
+2007-10-24  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Fixed problem with bogus file triggering 
+       assert(td->td_planarconfig == PLANARCONFIG_CONTIG) in 
+       ChopUpSingleUncompressedStrip
+
+2007-10-22  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_jpeg.c: Resolved buffer incrementation bug that lead to faulty images
+       at best, access violation at worst, when subsampled JPEG compressed imagery
+       is decoded without the JPEG_COLORMODE feature
+
+2007-10-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/index.html: Update "people responsible" section.
+
+2007-10-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2pdf.c: Fix problem with alpha setting in some cases
+       as reported on the mailing list.
+
+2007-10-01  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * changed some more incorrect %lud printf flags to %lu
+
+2007-09-29  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Strip chopping interfered badly with uncompressed 
+       subsampled images because it tried to divide subsampled rowblocks, 
+       leading to all sorts of errors throughout the library for these 
+       images. Fixed by making strip chopping divide in row counts that 
+       are a multiple of vertical subsampling value.
+
+2007-09-28  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Logical cast working around compiler warning
+
+       * tif_read.c: Correction of some error flags and parameter lists
+
+2007-09-27  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Made calculation of td_maxsamplevalue more robust
+       when dealing with large bitspersample values, shutting up purification
+       tools that warn about truncation, though it remains incorrect and 
+       indicates a conceptual problem there.
+
+       * tif_open.c: Moved early exit in case of 'h' flag (to disable reading 
+       of first IFD) to proper place because it badly interfered with memory 
+       mapping, resulting in mapping flag even with dummy mapping functions 
+       that returned 0 whilst at the same time the mapping tif_size wasn't 
+       set, thus resulting in continuous incorrect beyond-eof errors.
+
+2007-09-24  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirinfo.c: Fixed (MSVC) compiler reports about 
+       inconsistent use of const in tiffFields and exifFields definition
+
+2007-09-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: Always write tile/strip offsets and sizes
+       using LONG8 type when output format is BigTIFF.  The
+       TIFFWriteDirectoryTagLongLong8Array() function was restructured
+       accordingly.
+
+       * tif_dirread.c: Improvements to error reporting text in 
+       TIFFFetchDirectory().
+
+2007-09-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/images: Added a small collection of test images for use by
+       test programs and scripts.
+       * test/tiffinfo.sh: A trivial example test script.
+       * test/common.sh: Added small script for setting the environment
+       used by script-based tests.
+
+2007-08-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: Write the tif_nextdiroff value instead of a fixed
+       zero when writing directory contents to preserve the ability to 
+       rewrite directories in place, even in the middle of a directory
+       chain.
+
+       * tif_dirinfo.c:  _TIFFMergeFields() now only merges in field
+       definitions that are missing.  Existing definitions are silently
+       ignored. 
+
+       * tif_dirread.c: Add runtime error for fields for which no definition
+       is found (in addition to an assert for developers) in 
+       TIFFFetchNormalTag().  Not sure if this is needed, but it seems 
+       prudent.
+
+2007-08-10  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: removed SubsamplingHor and SubsamplingVer 
+       from _TIFFRGBAImage structure to revert unwanted ABI change.
+
+2007-08-10  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_win32.c: use SetFilePointer instead of 
+       SetFilePointerEx, as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1580
+
+2007-07-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_stream.cxx: Put all callback functions declarations
+       inside extern "C" block.
+
+       * libtiff/{tif_lzw.c, tif_luv.c, tif_dumpmode.c, tif_print.c,
+       tif_read.c, tif_strip.c, tif_thunder.c}: Use "%I64d" printf()
+       formatter instead of "%lld" with MSVC compiler.
+
+       * libtiff/{tiffiop.h, tif_aux.c}:  Added _TIFFUInt64ToFloat() and
+       _TIFFUInt64ToDouble() functions.
+
+2007-07-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Handle the case of MSVC 6 when using 64-bit
+       integer constants.
+
+       * libtiff/{Makefile.am, Makefile.v}: Do not distribute tiffconf.h, 
+       remove tif_config.h/tiffconf.h during cleaning. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1573
+
+       * libtiff/tif_unix.c: Do not use O_LARGEFILE. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1577
+
+2007-07-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 4.0.0alpha released.
+
+2007-07-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Added missed extern optind as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1567
+
+       * libtiff/{tif_close.c, tif_dirinfo.c, tiffiop.c, tif_dirread.c,
+       tif_dir.h, tif_dir.c, tiffio.h}: Transition to the new-style tag
+       extending scheme completed.
+
+2007-07-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_stream.cxx: Adapt to use toff_t again.  Update to
+       use standard C++ library size types and attempt to detect overflow
+       cases.
+
+2007-07-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_jpeg.c, tif_dir.h, tif_dir.c, tif_dirinfo.c, tiffio.h,
+       tif_ojpeg.c, tif_print.c, tif_fax3.c, tif_dirread.c}: More work on new
+       tag extending scheme. Use the new scheme everywhere.
+
+       * libtiff/{tif_zip.c, tif_predict.c, tif_pixarlog.c, tif_luv.c,
+       tif_fax3.c, tif_dirread.c, tif_dirwrite.c, tif_close.c, tif_ojpeg.c,
+       tif_jpeg.c, tif_dirinfo.c, tif_dir.h, tiffio.h, tiffiop.h}:
+       TIFFFIeldInfo structure replaced with TIFFField structure.
+       TIFFFieldInfo retained for the backward compatibility.
+
+2007-07-05  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiff2pdf.c: Fix a compile problem when JPEG_SUPPORT is not
+       defined.
+
+2007-07-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tiff.h, tiffio.h, libtiff.def}: Unused
+       TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration
+       removed.
+
+       * libtiff/{tif_dirinfo.c, tif_fax3.c, tif_jbig.c, tif_jpeg.c}: Move
+       tags TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS,
+       TIFFTAG_FAXRECVTIME and TIFFTAG_FAXDCS to the common tag directory.
+       These tags are not codec-specific and relate to image content, so
+       process them as other normal tags.
+
+       * libtiff/{tiffio.h, tif_dir.h}: TIFFTagValue structure moved from the
+       public tiffio.h to private tif_dir.h.
+
+       * contrib/{acorn, mac-cw, mac-mpw}: Removed as unmaintained and
+       outdated.
+
+2007-07-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff{tif_acorn.c, tif_apple.c, tif_atari.c, tif_msdos.c,
+       tif_win3.c}: Obsoleted portability stuff removed.
+
+       * tools/tiff2ps.c:  Added support 16-bit images as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1566
+
+       Patch from William Bader.
+
+       * tools/tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and
+       significant upgrade of the whole utility as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1560
+
+       Now we don't need tiffiop.h in tiff2pdf anymore and will open output
+       PDF file using TIFFClientOpen() machinery as it is implemented
+       by Leon Bottou.
+
+2007-06-26  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Fix typo when substituting value for unsigned 8 bit type.
+       Added support for a TIFF_PTRDIFF_T type to use when doing pointer arithmetic.
+       Added support for a TIFF_SSIZE_T in order to return memory sizes but still
+       allow returning -1 for errors.
+       * libtiff/tiffconf.vc.h: Add porting type defintions for WIN32.
+
+2007-06-25  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * port/strtoull.c: New porting function in case strtoull() is not
+       available on the target system. 
+       * configure.ac: Add configure support for determining sized types
+       in a portable way and performing necessary substitutions in
+       tif_config.h and tiffconf.h.  Updated tiff.h to use the new
+       definitions.
+
+2007-04-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Check the tmpfile() return status as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=154
+
+2007-04-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.h, tif_dirread.c, tif_dirinfo.c, tif_jpeg.c,
+       tif_fax3.c, tif_jbig.c, tif_luv.c, tif_ojpeg.c, tif_pixarlog.c,
+       tif_predict.c, tif_zip.c}: Finally fix bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1274
+
+       by introducing _TIFFMergeFieldInfo() returning integer error status
+       instead of void in case of problems with field merging (e.g., if the
+       field with such a tag already registered). TIFFMergeFieldInfo() in
+       public API remains void. Use _TIFFMergeFieldInfo() everywhere and
+       check returned value.
+
+2007-04-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * contrib/addtiffo/tif_overview.c: Fix problems with odd sized output 
+       blocks in TIFF_DownSample_Subsampled() (bug 1542).
+
+2007-04-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it
+       will convert from decompressor to compressor or compress to decompress
+       if required by the force arguments.  This works around a problem in
+       where the JPEGFixupTestSubsampling() may cause a decompressor to 
+       be setup on a directory when later a compressor is required with the
+       force flag set.  Occurs with the addtiffo program for instance. 
+
+2007-04-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcrop.c, man/tiffcrop.1: Significant update in
+       functionality from Richard Nolde. As per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1525
+
+2007-03-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.c: "inline static" -> "static inline" for IRIC CC.
+
+2007-03-17  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * start of BigTIFF upgrade - CVS HEAD unstable until further notice
+
+2007-03-07  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_getimage.c: workaround for 'Fractional scanline' error reading
+       OJPEG images with rowsperstrip that is not a multiple of vertical subsampling
+       factor. This bug is mentioned in:
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1390
+       http://www.asmail.be/msg0054766825.html 
+
+2007-03-07  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_win32.c: made inclusion of windows.h unconditional
+
+       * libtiff/tif_win32.c: replaced preprocessor indication for consiously
+       unused arguments by standard C indication for the same
+
+2007-02-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Use uint32 type instead of tsize_t in byte
+       counters in TIFFFetchData(). Should finally fix the issue
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=890
+
+2007-02-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c: Properly handle tags with TIFF_VARIABLE writecount.
+       As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1350
+
+       * libtiff/tif_dirread.c: Added special function to handle
+       SubjectDistance EXIF tag as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1362
+
+       * tools/tiff2pdf.c: Do not assume inches when the resolution units
+       do not specified. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1366
+
+       * tools/{tiffcp.c, tiffcrop.c}: Do not change RowsPerStrip value if
+       it was set as infinite. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1368
+
+       * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop utility contributed
+       by Richard Nolde. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1383
+
+2007-02-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Workaround for incorrect TIFFs with
+       ExtraSamples == 999 produced by Corel Draw. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1490
+
+       * libtiff/{tif_dirread.c, tif_read.c}: Type of the byte counters
+       changed from tsize_t to uint32 to be able to work with data arrays
+       larger than 2GB. Fixes bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=890
+       
+       Idea submitted by Matt Hancher.
+
+2007-01-31  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tif2rgba.c: This utility does not work properly on big-endian
+       architectures. It was fixed including the bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1149
+
+2007-01-15  Mateusz Loskot <mateusz@loskot.net>
+
+       * Submitted libtiff port for Windows CE platform
+       * libtiff/tif_config.wince.h: Added configuration header for WinCE.
+       * libtiff/tiffconf.wince.h: Ported old configuration header for WinCE.
+       * libtiff/tif_wince.c: Added WinCE-specific implementation of some
+       functons from tif_win32.c.
+       * libtiff/tif_win32.c: Disabled some functions already reimplemented in tif_wince.c.
+       * libtiff/tiffiop.h, port/lfind.c: Added conditional include of some
+       standard header files for Windows CE build.
+       * tools/tiffinfoce.c: Ported tiffinfo utility for Windows CE.
+
+2006-11-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_write.c: TIFFAppendToStrip() - clear sorted flag if 
+       we move a strip. 
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1359  
+
+2006-10-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: More fixes for vulnerabilities, reported
+       in Gentoo bug ():
+       
+       http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+       * libtiff/contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable.
+       Though it is still far from the state of being working and useful.
+
+2006-10-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_fax3.c: Save the state of printdir codec dependent
+       method.
+
+       * libtiff/tif_jpeg.c: Save the state of printdir codec dependent method
+       as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1273
+
+       * libtiff/tif_win32.c: Fixed problem with offset value manipulation
+       as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1322
+
+       * libtiff/{tif_read.c, tif_jpeg.c, tif_dir.c}: More fixes for
+       vulnerabilities, reported in Gentoo bug ():
+
+       http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+2006-09-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_fax3.c, tif_next.c, tif_pixarlog.c}: Fixed multiple
+       vulnerabilities, as per Gentoo bug ():
+
+       http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+2006-09-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c, libtiff/tif_zip.c: Fixed problems with mixing
+       encoding and decoding on the same read-write TIFF handle.  The LZW
+       code can now maintain encode and decode state at the same time. The
+       ZIP code will switch back and forth as needed.  
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=757
+
+2006-09-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff: Rename config.h.vc and tif_config.h.vc to config.vc.h and 
+       tif_config.vc.h for easier identification by folks using an IDE.
+
+2006-07-25  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_msdos.c: Avoid handle leak for failed opens.  c/o Thierry Pierron
+
+2006-07-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: take care not to flush out buffer of strip/tile
+       data in _TIFFWriteDirectory if TIFF_BEENWRITING not set.  Relates
+       to bug report by Peng Gao with black strip at bottom of images.
+
+2006-07-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: make sure to use uint32 for wordcount in 
+       TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields.
+       It already seems to have been done for other field types.  Needed
+       for "tiffset" on files with geotiff ascii text.
+
+2006-07-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * {configure.ac, libtiff/tif_config.h.vc, libtiff/tif_jbig.c}
+       (JBIGDecode): jbg_newlen is not available in older JBIG-KIT and
+       its use does not appear to be required, so use it only when it is
+       available.
+
+2006-06-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961).
+
+       * libtiff/tif_dirread.c: Move IFD fetching code in the separate
+       function TIFFFetchDirectory() avoiding code duplication in
+       TIFFReadDirectory() and TIFFReadCustomDirectory().
+
+2006-06-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2pdf.c: Fix handling of -q values.
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=587
+
+2006-06-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_readdir.c: Added case in EstimateStripByteCounts() for tiled
+       files.  Modified TIFFReadDirectory() to not invoke 
+       EstimateStripByteCounts() for case where entry 0 and 1 are unequal
+       but one of them is zero. 
+         http://bugzilla.remotesensing.org/show_bug.cgi?id=1204
+
+2006-06-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_open.c, tif_dirread.c, tiffiop.h}: Move IFD looping
+       checking code in the separate function TIFFCheckDirOffset().
+
+       * libtiff/tif_aux.c: Added _TIFFCheckRealloc() function.
+
+       * tools/tiffcmp.c: Fixed floating point comparison logic as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1191
+
+       * libtiff/tif_fax3.c: Fixed problems in fax decoder as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1194
+
+       * tools/tiff2pdf.c: Fixed buffer overflow condition in
+       t2p_write_pdf_string() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1196
+
+2006-06-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * {configure, configure.ac, libtiff/tif_jbig.c, tools/tiffcp.c}: Added
+       support for JBIG compression scheme (34661 code) contributed by Lee
+       Howard. As per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=896
+
+       * configure, configure.ac: OJPEG support enabled by default.
+
+       * contrib/ojpeg/: Removed. New OJPEG support does not need this patch.
+
+2006-06-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/{tif_dirinfo.c, tif_print.c} : Fix crash in
+       TIFFPrintDirectory().  Joris Van Damme authored the fix.
+
+2006-04-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Unified line ending characters (always use '\n')
+       as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1163
+
+       * README.vms, Makefile.am, configure.com, libtiff/{Makefile.am,
+       tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}:
+       Added support for OpenVMS by Alexey Chupahin, elvis_75@mail.ru.
+
+2006-04-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/{fax2ps.c, fax2tiff.c, ppm2tiff.c, ras2tiff.c, tiff2pdf.c}:
+       Properly set the binary mode for stdin stream as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1141
+
+       * man/{bmp2tiff.1, fax2ps.1, fax2tiff.1, gif2tiff.1, ras2tiff.1,
+       raw2tiff.1, rgb2ycbcr.1, sgi2tiff.1, tiff2bw.1, tiff2pdf.1, tiff2ps.1,
+       tiff2rgba.1, tiffcmp.1, tiffcp.1, tiffdither.1, tiffdump.1, tiffgt.1,
+       tiffset.1}: Improvements in page formatting as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1140
+
+       * html/tools.html, html/man/Makefile.am, tools/tiff2pdf.c: Fixed
+       typos as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1139
+
+2006-04-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * nmake.opt: use /EHsc for VS2005 compatibility.  Also define
+       _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005. 
+
+2006-04-12  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: Added support for planarconfig separate
+       non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1])
+
+2006-04-11  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_getimage.c: Revision of all RGB(A) put routines
+       - Conversion of unassociated alpha to associated alpha now done with
+         more performant LUT, and calculation more correct
+       - Conversion of 16bit data to 8bit data now done with
+         more performant LUT, and calculation more correct
+       - Bugfix of handling of 16bit RGB with unassociated alpha
+
+2006-04-11  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_getimage.c: 
+       - When there is no alpha, gtTileSeparate and gtStripSeparate allocated 
+         buffer for alpha strile and filled it, only to never read it back. 
+         Removed allocation and fill.
+       - Minor rename of vars in gtTileSeparate and gtStripSeparate 
+         anticipating planned functionality extension
+
+2006-04-08  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: renamed pickTileContigCase to PickContigCase 
+       and pickTileSeparateCase to PickSeparateCase as both work on strips as 
+       well
+
+       * libtiff/tif_getimage.c: moved img->get selection from 
+       TIFFRGBAImageBegin into PickContigCase and PickSeparateCase to create
+       logical hook for planned functionality extension
+
+2006-04-08  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_ojpeg.c: resolved memory leak that was a consequence
+       of inappropriate use of jpeg_abort instead of jpeg_destroy
+
+2006-04-07  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: replaced usage of TIFFScanlineSize in 
+       gtStripContig with TIFFNewScanlineSize so as to fix buggy behaviour
+       on subsampled images - this ought to get sorted when we feel brave 
+       enough to replace TIFFScanlineSize alltogether
+
+       * libtiff/tif_ojpeg.c: fixed bug in OJPEGReadSkip
+
+2006-04-04  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tiffio.h: added new type tstrile_t
+
+       * libtiff/tif_dir.h: changed types of td_stripsperimage and td_nstrips 
+       to new tstrile_t, types of td_stripoffset and td_stripbytecount to 
+       toff_t*
+
+       * libtiff/tif_ojpeg.c: totally new implementation
+
+       * libtiff/tif_dirread.c: added several hacks to suit new support of 
+       OJPEG
+
+       * libtiff/tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling
+       of OJPEG images in favor of tif_getimage.c native handling of
+       YCbCr and desubsampling
+
+2006-03-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: JPEGVSetField() so that altering the photometric
+       interpretation causes the "upsampled" flag to be recomputed.  Fixes
+       peculiar bug where photometric flag had to be set before jpegcolormode
+       flag.
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_jpeg.c: strip size related bugfix in encode raw
+
+       * libtiff/tif_strip.c: temporarilly added two new versions of
+       TIFFScanlineSize
+         - TIFFNewScanlineSize: proposed new version, after all related
+           issues and side-effects are sorted out
+         - TIFFOldScanlineSize: old version, from prior to 2006-03-21 change
+       This needs further sorting out.
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * contrib/addtiffo/tif_ovrcache.c: bugfix to correctly pass size
+       of last truncated strip data to TIFFWriteEncodedStrip
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/{tif_jpeg.c, tif_strip.c}: bugfix of tif_jpeg decode raw
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: bugfix/rewrite of putcontig8bitYCbCr22tile
+
+       * libtiff/tif_getimage.c: added putcontig8bitYCbCr12tile
+
+       * libtiff/tif_read.c: added support for new TIFF_NOREADRAW flag to 
+       prepare the path for new tif_ojpeg.c
+
+2006-03-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.8.2 released.
+
+       * tools/Makefile.am: Use runtime paths linker flags when rpath
+       option enabled.
+
+2006-03-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/libtiff.def: Added missed exports as per bug
+       http://bugzilla.remotesensing.org/attachment.cgi?id=337
+
+       * contrib/addtiffo/Makefile.vc, libtiff/Makefile.vc, port/Makefile.vc,
+       tools/Makefile.vc: Makefiles improvements as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1128
+
+       * nmake.opt libtiff/{tif_config.h.vc, tif_unix.c, tiffio.h},
+       tools/{fax2ps.c, fax2tiff.c, tiff2pdf.c}: Fixed win32 I/O functions
+       usage as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1127
+
+       * libtiff/tif_strip.c: Take subsampling in account when calculating
+       TIFFScanlineSize().
+
+       * tools/tiffcp.c: Do not set RowsPerStrip bigger than image length.
+
+2006-03-17  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/fax2tiff.c: Fixed wrong TIFFerror() invocations as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1125
+
+       * tools/fax2ps.c: Fixed reading the input stream from stdin as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1124
+
+2006-03-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiffiop.h: Added decalration for
+       _TIFFSetDefaultCompressionState().
+
+       * libtiff/{tif_jpeg.c, tif_fax3.c, tif_zip.c, tif_pixarlog.c,
+       tif_lzw.c, tif_luv.c}: Use _TIFFSetDefaultCompressionState() in all
+       codec cleanup methods. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1120
+
+2006-03-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_jpeg.c: Do not cleanup codec state in TIFFInitJPEG(). As
+       per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1119
+
+       * tools/raw2tiff.c: Do not set RowsPerStrip larger than ImageLength.
+       As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1110
+
+       * libtiff/tiffiop.h: dblparam_t typedef removed; GLOBALDATA macro
+       removed; move here the STRIP_SIZE_DEFAULT macro definition.
+
+       * libtiff/{tif_dirread.c, tif_strip.c}: Removed STRIP_SIZE_DEFAULT
+       macro definition.
+
+       * libtiff/tif_dir.c: Use double type instead of dblparam_t.
+
+2006-03-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Do not check the PlanarConfig tag presence
+       in TIFFReadDirectory, because it is always set at the start of
+       function and we allow TIFFs without that tag set.
+
+2005-03-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.8.1 released.
+
+2006-03-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Fixed error reporting in TIFFFetchAnyArray()
+       function as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
+
+       * libtiff/tif_dirread.c: More wise check for integer overflow
+       condition as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
+
+       * libtiff/{tif_jpeg.c, tif_pixarlog.c, tif_fax3.c, tif_zip.c}:
+       Properly restore setfield/getfield methods in cleanup functions. As
+       per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
+
+2006-03-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_predict.c, tif_predict.h}: Added new function
+       TIFFPredictorCleanup() to restore parent decode/encode/field methods.
+
+       * libtiff/{tif_lzw.c, tif_pixarlog.c, tif_zip.c}: Use
+       TIFFPredictorCleanup() in codec cleanup methods. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
+
+       * libtiff/tif_dirread.c: Fixed integer overflow condition in
+       TIFFFetchData() function. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
+
+2006-03-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_ojpeg.c: Set the ReferenceBlackWhite with the
+       TIFFSetField() method, not directly. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1043
+
+       * tools/ppm2tiff.c: Added support for PBM files as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1044
+
+2006-02-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_write.c: Small code rearrangement in TIFFWriteScanline()
+       to avoid crash as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1081.
+
+2006-02-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Functions t2p_sample_rgbaa_to_rgb() and
+       t2p_sample_rgba_to_rgb() was used in place of each other, that was
+       resulted in problems with RGBA images with associated alpha.
+       As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1097
+
+2006-02-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirwrite.c: Properly write TIFFTAG_DOTRANGE tag as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1088.
+
+       * libtiff/tif_print.c: Properly read TIFFTAG_PAGENUMBER,
+       TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE
+       tags as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1088.
+
+       * tools/tiff2ps.c: Properly scale all the pages when converting
+       multipage TIFF with /width/height/center options set. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1080
+
+2006-02-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Do not create output file until all option checks
+       will be done. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1072
+
+       * tools/bmp2tiff.c: Added ability to create multipage TIFFs from the
+       list of input files as per bug:
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1077
+
+2006-02-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_tile.c: Fix error reporting in TIFFCheckTile() as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1063.
+
+       * tools/tiffgt.c: Avoid crashing in case of image unsupported by
+       TIFFRGBAImage interface.
+
+       * libtiff/tif_color.c: Avoid overflow in case of wrong input as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1065.
+
+2006-02-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2pdf.c: Fixed support for non-YCbCr encoded JPEG
+       compressed TIFF files, per submission from Dan Cobra. 
+
+2006-02-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirread.c, tif_packbits.c, tif_win32.c}: Properly
+       cast values to avoid warnings. As per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1033.
+
+       * libtiff/tif_dirinfo.c: Use TIFF_NOTYPE instead of 0 when
+       appropriate. As per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1033.
+
+       * libtiff/tif_aux.c: Fixed type of temporary variable in
+       _TIFFCheckMalloc() as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1033.
+
+2006-02-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_aux.c: Return static array when fetching default
+       YCbCrCoefficients (another problem, reported a the
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1029 entry).
+
+2006-02-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Special handling for PageNumber, HalftoneHints,
+       YCbCrSubsampling and DotRange tags as per bugs
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1029
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1034
+
+       * libtiff/tif_dirread.c: Use _TIFFGetExifFieldInfo() instead of
+       _TIFFGetFieldInfo() in TIFFReadEXIFDirectory() call as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1026.
+
+2006-01-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtool related stuff updated from the 2.1a branch.
+
+2006-01-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/bmp2tiff,pal2rgb,ppm2tiff,ras2tiff,raw2tiff,sgi2tiff,
+       tiff2bw,tiffcp: Fixed jpeg option processing so -c jpeg:r:50 works
+       properly as per bug:
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1025
+
+2006-01-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Fix with_default_strip_size comparison as reported
+       by Norihiko Murase.
+
+2006-01-08  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/Makefile.am (LIBTIFF): Due to linking against libtiff
+       incorrectly, tests were not actually testing the uninstalled
+       libtiff.  Now they are.
+
+2006-01-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Change definitions for TIFFTAG_ICCPROFILE,
+       TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, TIFFTAG_XMLPACKET: readcount
+       should be uint32 value.
+
+2006-01-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * html/man/Makefile.am (htmldoc): Fix htmldoc rule so that it can
+       be used if build directory is not the same as source directory.
+       * man/{TIFFGetField.3tiff, TIFFSetField.3tiff}: Documented
+       TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, and TIFFTAG_XMLPACKET,
+       and re-sorted tag names in alphabetical order.
+
+2005-12-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.8.0 released.
+
+2005-12-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/bmp2tiff.c (main): Fixed warning regarding returning
+       inconsistent types from a condition.
+       * tools/tiffcmp.c (CheckLongTag): Eliminate warning due to printf
+       format.
+       * tools/bmp2tiff.c: Reduce compilation warnings on big-endian CPUs.
+
+2005-12-28  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * html/{index.html, support.hml, libtiff.html}: Cleaned up HTML
+
+2005-12-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiffio.h: Added VC_EXTRALEAN definition before including
+       windows.h, to reduce the compile time.
+
+2005-12-26  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_jpeg.c: Improve compilation under MinGW.
+
+2005-12-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tif_dir.h, tif_dirread.c, tif_dirinfo.c}: 
+       tiffFieldInfo and exifFieldInfo arrays definitions moved back to
+       tif_dirinfo.c; added _TIFFGetFieldInfo() and _TIFFGetExifFieldInfo()
+       private functions to retrieve FieldInfo arrays.
+
+2005-12-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * html/build.html: Added some additional instructions for when
+       building using MSVC under Windows.  Also fixed two HTML syntax
+       errors and used HTML Tidy to tidy up the HTML syntax and
+       formatting.
+
+2005-12-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_aux.c, tif_dir.c, tif_dir.h, tif_dirwrite.c,
+       tif_print.c, tif_getimage.c}: Make InkSet, NumberOfInks, DotRange and
+       StoNits tags custom.
+
+2005-12-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_aux.c, tif_dir.c, tif_dir.h, tif_print.c}: Make
+       WhitePoint tag custom.
+
+       * libtiff/{tif_dir.h, tiff.h}: More EXIF tags added.
+
+2005-12-23  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tiffio.h: fixed typo that potentially resulted in 
+       redefininition of USE_WIN32_FILEIO
+
+       * libtiff/*: Added more 'dual-mode' error handling: Done TIFFWarning 
+       calls in core LibTiff.
+
+2005-12-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tif_dir.h, tif_print.c}: Make RichTIFFIPTC,
+       Photoshop and ICCProfile tags custom.
+
+2005-12-21  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling 
+       newer code to get context indicator in error handler and still
+       remain compatible with older code: Done TIFFError calls everywhere 
+       except in tools   
+
+2005-12-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Added many error reporting messages; fixed integer
+       overflow as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=789
+
+2005-12-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * contrib/addtiffo/*: Major upgrade by Joris to support subsampled
+       YCbCr images in jpeg compressed TIFF files.
+
+2005-12-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Return non-zero status when reading fails (again).
+
+2005-12-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Return non-zero status when reading fails.
+
+2005-12-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.h, tiff.h}: Added more EXIF tags.
+
+2005-12-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tif_dir.h, tif_print.c}: Make XMLPacket tag
+       custom.
+
+       * tools/tiffinfo.c: Print EXIF directory contents if exist.
+
+       * libtiff/tiff.h: Few EXIF tag numbers added.
+
+       * libtiff/{tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c,
+       tiffio.h}: Preliminary support to read custom directories. New
+       functions: TIFFReadCustomDirectory() and TIFFReadEXIFDirectory().
+
+2005-12-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c}:
+       More work to implement custom directory read support.
+
+       * libtiff/{tif_aux.c, tif_dirinfo.c, tif_dirread.c, tif_dir.h,
+       tif_dir.c, tif_print.c}: Make YCbCrCoefficients and ReferenceBlackWhite
+       tags custom.
+
+2005-12-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: One more workaround for broken
+       StripByteCounts tag. Handle the case when StripByteCounts array filled
+       with completely wrong values.
+
+2005-11-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Release file descriptor in case of failure
+       in the TIFFOpenW() function as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1003
+
+       * libtiff/tif_dirinfo.c: Correctly yse bsearch() and lfind()
+       functions as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1008
+
+2005-11-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_open.c, tiff.h, tiffdump.c: Incorporate preliminary support
+       for MS MDI format.
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1002
+
+       * .cvsignore: many files added, and a few update according
+       to suggestion of Brad HArds on tiff mailing list. 
+
+2005-11-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def, tiffiop.h, tiffio.h: Made TIFFFreeDirectory
+       public.
+
+2005-10-31  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/fax2tiff.c: Properly calculate sizes of temporary arrays
+       as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=943
+
+       * tools/fax2tiff.c: Added option '-r' to set RowsPerStrip parameter
+       as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=944
+
+       * tools/tiffdump.c: Fixed typeshift and typemask arrays initialization
+       problem as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=946
+
+       * tools/bmp2tiff.c: Fixed possible integer overflow error as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=965
+
+       * libtiff/tif_dirinfo.c: Make XResolution, YResolution and
+       ResolutionUnit tags modifiable during write process. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=977
+
+       * tools/tiffsplit.c: Copy fax related fields over splitted parts
+       as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=983
+
+2005-10-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirread.c: Don't try and split single strips into "0" strips
+       in ChopUpSingleUncompressedStrip.  This happens in some degenerate
+       cases (like 1x1 files with stripbytecounts==0 (gtsmall.jp2 embed tiff)
+
+2005-10-20  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_fax3.c: changed 'at scanline ...' style warning/errors
+       with incorrect use of tif_row, to 'at line ... of
+       strip/tile ...' style
+
+2005-10-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_write.c: fixed setting of planarconfig as per bug report
+       on the mailing list from Joris.
+
+2005-10-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, configure, nmake.opt, libtiff/{tif_config.h,
+       tif_dirread.c}: Make the default strip size configurable via the
+       --with-default-strip-size and STRIP_SIZE_DEFAULT options.
+
+2005-09-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * html/support.html: Fixed link to documentation on Greg Ward's
+       LogLuv TIFF format.
+
+2005-09-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffdump.c: Fixed crash when reading malformed tags.
+
+2005-09-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Added missed 'break' statement as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=932
+
+2005-09-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.4 released.
+
+       * {configure, configure.ac, Makefile.am, autogen.sh}: Applied patch
+       from Patrick Welche (all scripts moved in the 'config' and 'm4'
+       directories).
+
+2005-09-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_open.c: reintroduce seek to avoid problem on solaris.
+
+2005-09-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c: When prefreeing tv->value in TIFFSetFieldV
+       also set it to NULL to avoid double free when re-setting custom
+       string fields as per: 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=922
+
+2005-08-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_print.c: avoid signed/unsigned warning.
+
+       * libtiff/tif_dirread.c: removed unused variable.
+
+2005-07-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c: Fixed up support for swapping "double complex"
+       values (128 bits as 2 64 bits doubles).  GDAL gcore tests now
+       pass on bigendian (macosx) system.
+
+2005-07-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_aux.c, tif_dirread.c, tif_fax3.c, tiffiop.h}: Rename
+       CheckMalloc() function to _TIFFCheckMalloc() and make it available
+       globally as an internal helper routine.
+
+2005-07-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: More improvements in the "pass by value" part of
+       the custom tags handling code.
+
+2005-07-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirread.c, tif_dirinfo.c}: Do not upcast BYTEs to
+       SHORTs in the TIFFFetchByteArray(). Remove TIFFFetchExtraSamples()
+       function, use TIFFFetchNormalTag() instead as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=831
+
+       Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag()
+       instead. 
+
+       * libtiff/tiffconf.h.in: One more attempt to fix the AIX bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+
+2005-07-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_print.c: Fixed printing of the BYTE and SBYTE arrays.
+
+       * tools/tiffdump.c: Added support for TIFF_IFD datatype.
+
+2005-07-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_write.c: Do not check the PlanarConfiguration field in
+       the TIFFWriteCheck() function in case of single band images (as per
+       TIFF spec).
+
+2005-07-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * SConstruct, libtiff/SConstruct: Added the first very preliminary
+       support for SCons software building tool (http://www.scons.org/).
+       This is experimental infrastructure and it will exist along with the
+       autotools mechanics.
+
+2005-07-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * port/{getopt.c, strcasecmp.c, strtoul.c}: Update modules from
+       the NetBSD source tree (the old 4-clause BSD license changed to
+       the new 3-clause one).
+
+       * configure.ac, port/lfind.c, libtiff/tiffiop.h: Added lfind()
+       replacement module.
+
+       * port/dummy.c: Make the dummy function static.
+
+2005-07-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Fixed WhitePoint tag copying.
+
+       * libtiff/{tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_print.c}:
+       Make FieldOfViewCotangent, MatrixWorldToScreen, MatrixWorldToCamera,
+       ImageFullWidth, ImageFullLength and PrimaryChromaticities tags custom.
+
+2005-07-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.3 released.
+
+       * configure, configure.ac: Do not use empty -R option when linking
+       with --enable-rpath.
+
+2005-07-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffiop.h, tif_open.c}: Added open option 'h' to avoid
+       reading the first IFD when needed. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=875
+
+       * libtiff/tif_color.c: Better use of TIFFmin() macro to avoid side
+       effects.
+
+2005-06-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Print two characters per loop in the
+       t2p_write_pdf_trailer(). As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=594
+
+       * tools/tiffgt.c: Use MacOS X OpenGL framework when appropriate. As
+       per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=844
+
+       * acinclude.m4: Updated to latest OpenGL test macros versions.
+
+       * libtiff/tiff.h: Use correct int size on Sparc 64bit/Sun compiler
+       platform. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=855
+
+2005-06-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Added support for ClipPath, XClipPathUnits
+       and YClipPathUnits tags.
+
+2005-06-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * contrib/addtiffo/tif_ovrcache.c: Properly extract tile/strip size;
+       use pixel sized shift in contigous case.
+
+2005-06-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * contrib/addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}:
+       Make overviews working for contiguos images.
+
+2005-06-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_open.c: Replace runtime endianess check with the compile
+       time one.
+
+       * libtiff/tif_predict.c: Floating point predictor now works on
+       big-endian hosts.
+
+2005-06-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Use _TIFFsetString() function when read custom
+       ASCII values.
+
+       * libtiff/{tif_dirinfo.c, tif_dir.h, tif_dir.c, tif_print.c}: Make
+       DocumentName, Artist, HostComputer, ImageDescription, Make, Model,
+       Copyright, DateTime, PageName, TextureFormat, TextureWrapModes and
+       TargetPrinter tags custom.
+
+       * libtiff/tif_jpeg.c: Cleanup the codec state depending on
+       TIFF_CODERSETUP flag (to fix memry leaks).
+
+       * libtiff/tif_jpeg.c: Initialize JPEGTables array with zero after
+       allocating.
+
+2005-05-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, libtiff/Makefile.am: Added workaround for
+       OpenBSD/MirOS soname problem as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=838
+
+       * libtiff/tif_dirwrite.c: Use tdir_count when calling
+       TIFFCvtNativeToIEEEDouble() in the TIFFWriteDoubleArray() function as
+       per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=845
+
+2005-05-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/ppm2tiff.c: Fixed format string when read PPM file header with
+       the fscanf() function. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=861
+
+       * libtiff/{tif_dirinfo.c, tif_print.c}: TIFFFetchByteArray() returns
+       uint16 array when fetching the BYTE and SBYTE filds, so we should
+       consider result as pointer to uint16 array and not as array of chars.
+       As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=831
+
+       * libtiff/tif_dir.c: More efficient custom tags retrieval as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=830
+
+       * libtiff/tif_win32.c: Use FILE_SHARE_READ | FILE_SHARE_WRITE share
+       mode in CreateFile() call as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=829
+
+       * libtiff/Makefile.am: Fixed parallel compilation of the libtiff and
+       libtiffxx libraries as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=826
+
+       * contrib/addtiffo/{tif_overview.c, tif_ovrcache.h}: Sinchronized with
+       GDAL.
+
+2005-05-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Substantial fix for addtiffo problems with
+       JPEG encoded TIFF files.  Pre-allocate lots of space for jpegtables
+       in directory.
+
+2005-05-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Changed the code that computes 
+       stripbytecount[0] if it appears bogus to ignore if stripoffset[0] is
+       zero. This is a common case with GDAL indicating a "null" tile/strip.
+
+2005-05-17  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Check for JPEGTables tag presence before copying.
+
+2005-05-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Applied similar change to 
+       TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=843
+
+       * libtiff/tif_jpeg.c: added LIB_JPEG_MK1 support in JPEGDecodeRaw().
+
+2005-05-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+       * tools/tiff2pdfr.c, man/tiff2pdf.1: Calculate the tile width properly;
+       added new option '-b' to use interpolation in output PDF files (Bruno
+       Ledoux).
+
+2005-05-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Ensure that broken files with too many
+       values in PerSampleShorts work ok instead of crashing.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=843
+
+2005-04-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffdither.c: Copy the PhotometricInterpretation tag from the
+       input file.
+
+2005-04-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_predict.c: Added ability to encode floating point
+       predictor, as per TIFF Technical Note 3.
+
+2005-04-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_predict.h, tif_predict.c}: Added ability to decode
+       floating point predictor, as per TIFF Technical Note 3.
+
+2005-04-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffio.h, tiffiop.h, tif_dir.c, tif_read.c, tif_swab.c}:
+       Added _TIFFSwab24BitData() and TIFFSwabArrayOfLong() functions used to
+       swap 24-bit floating point values.
+
+       * libtiff/tiff.h: Added predictor constants.
+
+2005-04-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffiop.h, tif_dir.c}: Use uint32 type for appropriate
+       values in _TIFFVSetField() function. Inspired by the bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=816
+
+       * man/TIFFSetField.3tiff: Fixed definition of the TIFFTAG_INKNAMES tag
+       as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=816
+
+2005-03-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_open.c: Do not read header in case the output file
+       should be truncated (Ron).
+
+       * libtiff/{tif_dirinfo.c, tif_config.h.vc}: Use lfind() instead
+       of bsearch() in _TIFFFindFieldInfoByName() function (Ron).
+
+       * libtiff/{tiff.h, tif_dirinfo.c}: Fixes in EXIF tag ordering (Ron).
+
+2005-03-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, libtiff/Makefile.am: Use libtool machinery to pass
+       rpath option.
+
+2005-03-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tif_print.c}: Handle all data types in custom
+       tags.
+
+2005-03-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/dirinfo.c: Added DNG tags.
+
+       * libtiff/{tif_dir.c, tif_print.c}: More improvements in custom tag
+       handling code.
+
+       * libtiff/tiff.h: More comments; added missed DNG tag (LensInfo);
+       added DNG 1.1.0.0 tags.
+
+       * tools/tif2pdf.c: Fixed problem with alpha channel handling as per
+       bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=794
+
+       * man/TIFFGetField.3tiff: Add a note about autoregistered tags.
+
+2005-03-17  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * nmake.opt: Build with Win32 CRT library by default.
+
+       * tools/tiff2ps.c: Fixed typo in page size handling code.
+
+       * libtiff/{tif_dir.c, tif_print.c}: Support for custom tags, passed
+       by value.
+
+       * libtiff/{tiff.h, tif_dirinfo.c, tiffiop.h}: Added EXIF related tags.
+
+2005-03-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.2 released.
+
+2005-03-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcmp.c: Added ability to compare the 32-bit integer and
+       floating point data; complain on unsupported bit depths.
+
+2005-03-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tif_stream.cxx: Use ios namespace instead of ios_base to support
+       GCC 2.95.
+
+       * libtiff/{tiff.h, tif_fax3.tif, tif_jpeg.c}: Applied correct patch from
+       Lee Howard for HylaFax DCS tag
+       (see http://bugzilla.remotesensing.org/show_bug.cgi?id=771)
+
+2005-03-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure, configure.ac: Use -rpath option instead of -R as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=732
+
+       * libtiff/{tiff.h, tif_fax3.tif, tif_jpeg.c}: Applied patch from Lee
+       Howard to support a new tag TIFFTAG_FAXDCS (34911) used in HylaFax
+       software. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=771
+
+       * nmake.opt, html/build.html: Add more comments, change the config
+       file organization a bit as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=764
+
+       * tools/tiffcmp.c: Use properly sized buffer in short arrays comparison
+       as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=785
+
+2005-03-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: More logic to guess missed strip size as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=705
+
+       * tools/fax2ps.c: Replace insecure mktemp() function with the
+       tmpfile() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=786
+
+2005-02-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiff.h: Changed the int8 definition to be always signed char
+       as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=727
+
+       * libtiff/tiffio.h: Move TIFFOpenW() function into the extern "C"{}
+       block as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=763
+
+2005-02-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffgt.c: Fix problem on big-endian CPUs so that images
+       display more correctly.  Images display brighter than they should
+       on a Sun workstation.
+
+2005-02-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Estimate strip size in case of wrong or
+       suspicious values in the tags. As per bugs
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=705
+
+       and
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=320
+
+       * tools/tiff2ps.c: Fixed problem with page sizes as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=742
+
+2005-01-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiff.h (TIFFTAG_TILEWIDTH): Corrected description.
+       (TIFFTAG_TILELENGTH): Corrected description.
+
+2005-01-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac: Fixes for --with-docdir option as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=759
+
+       * libtiff/tif_open.c: Remove unnesessary TIFFSeekFile() call as per
+       bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=756
+
+       * libtiff/tif_stream.cxx: Fixes for C++ stream interface from
+       Michael Rinne and Edward Lam.
+
+2005-01-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac: Make the documentation directory location configurable
+       via the --with-docdir option (as suggested by Jeremy C. Reed).
+
+       * libtiff/tif_color.c: Use double as the second argument of pow()
+       function in TIFFCIELabToRGBInit(). As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=741
+
+       * libtiff/tif_pixarlog.c: Avoid warnings when converting float to
+       integer as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=740
+
+       * libtiff/tif_getimage.c: Always fill the error message buffer in
+       TIFFRGBAImageBegin() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=739
+       
+2005-01-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_jpeg.c: Added ability to read/write the fax specific
+       TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS and TIFFTAG_FAXRECVTIME
+       tags as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=736
+
+       * libtiff/tif_win32.c: Fixed message formatting in functions
+       Win32WarningHandler() and Win32ErrorHandler() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=735
+
+       * tools/tiff2ps.c: Interpret the -w and -h options independently. As
+       per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=689
+
+2005-01-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiffio.h: Move the color conversion routines in the 'extern
+       "C"' section as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=727
+
+       * libtiff/tiff.h: Restore back the workaround for AIX Visual Age C
+       compiler to avoid double definition of BSD types as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=39    
+
+       * libtiff/Makefile.am: Place the C++ stream API in the separate
+       library called libtiffxx to avoid unneeded dependencies. Probably
+       there will be more C++ API in the future. As per bugs
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=733
+
+       and
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=730
+
+2005-01-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffdump.c: Fixed problem when read broken TIFFs with the
+       wrong tag counts (Dmitry V. Levin, Martin Pitt).
+
+       * configure.ac: Replace --disable-c++ with the --disable-cxx option as
+       per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=730
+
+2004-12-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_getimage.c: More fixes for multiple-alpha-channelled
+       RGB-images as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=713
+
+
+       * tools/tiffset.c: Convert character option to integer value as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=725
+
+2004-12-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.1 released.
+
+       * html/tiffset.1.html: Add missed manual page as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=678
+
+       * libtiff/tiff.h: Revert back libtiff data type definitions as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=687
+
+2004-12-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Do not forget about TIFF_VARIABLE2 when
+       checking for tag count in TIFFReadDirectory() function. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=713
+
+       * libtiff/{tif_dirread.c, tif_fax3.c}: More argument checking in
+       CheckMallock() function.
+
+       * libtiff/tif_getimage.c: Support for multiple-alpha-channelled
+       RGB-images as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=718
+
+2004-12-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: #define A1 bracketing for clean build on
+       SunPro compiler. 
+
+2004-12-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * autogen.sh: aclocal and autoheader should be executed after
+       libtoolize.  Also add '-I .' to aclocal invocation to check
+       current directory for macros.
+
+2004-12-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirwrite.c: Always write TIFFTAG_SUBIFD using LONG type
+       as per bugs
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=703
+
+       and
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=704
+
+2004-12-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * nmake.opt: Link with the user32.lib in windowed mode. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=697
+
+       * libtiff/tif_win32.c: Use char* strings instead of TCHAR in windowed
+       mode as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=697
+
+       * libtiff/tif_config.in.vc: Removed unneded definitions for
+       read/open/close/lseek functions to fix the
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=680
+       
+2004-12-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tif_dirread.c}: Remove TIFFReassignTagToIgnore()
+       call from the TIFFReadDirectory() function. TIFFReassignTagToIgnore
+       must be removed in the future, as it was never used properly. As per
+       bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=692
+
+2004-11-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_jpeg.c: Added a work-around in order to allow
+       compilation with the heavily modified version of libjpeg delivered
+       with Cygwin.
+
+2004-11-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Properly handle tags, which have the uint32
+       counts. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=693
+
+       * tools/fax2ps.c: Be able to extract the first page (#0). As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=690
+
+2004-11-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_unix.c: Make UNIX module compilable (and usable)
+       on Windows.
+
+       * nmake.opt: Add missed DLLNAME variable.
+
+2004-11-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/makefile.vc: make it easier to rename the libtiff DLL. 
+
+2004-11-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * man/libtiff.3tiff: Improvements in the "LIST OF ROUTINES" table as
+       per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=545
+
+       * man/tiffset.1: Added manual page for tiffset tool written by Jay
+       Berkenbilt. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=678
+
+2004-11-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_error.c: fixed TIFFerror call to be TIFFError.
+
+2004-11-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/document.html: Updated Adobe web links as per email from Joris.
+
+2004-11-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffio.hxx, tiffio.h}: C++ stream interface moved to new
+       file tiffio.hxx. We don't have any C++ in tiffio.h, those who want to
+       use C++ streams should #include <tiffio.hxx>.
+
+2004-11-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiff.h: Added Adobe DNG tags.
+
+       * libtiff/tif_win32.c: Typo fixed.
+
+       * libtiff/{tif_stream.cxx, tiffio.h}: C++ stream interface updated to
+       be compliant with the latest standard. Appropriate additions in
+       makefiles now completed.
+
+2004-11-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c, libtiff/tif_dirinfo.c: Properly handle the
+       different tag types. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=600
+
+2004-11-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_aux.c: Set the appropriate ReferenceBlackWhite array for
+       YCbCr image which lacks that tag (noted by Hans Petter Selasky).
+
+2004-11-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_color.c: Division by zero fixed (Hans Petter Selasky).
+
+2004-11-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_stream.cxx, tiffio.h}: Added C++ stream interface
+       contributed by Edward Lam (see
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=654 for details).
+       Though no changes in any makefiles yet.
+
+2004-11-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_open.c: Removed close() in TIFFClientOpen() if file
+       is bad. This is the callers responsibility.
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=651
+
+2004-11-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffio.h, tif_win32.c, libtiff.def}: Added TIFFOpenW()
+       function to work with the double byte strings (used to represent
+       filenames in some locales). As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=625
+
+       * libtiff/tif_dirread.c: Fixed problem when fetching BitsPerSample and
+       Compression tags of type LONG from broken TIFFS as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=662
+
+       * libtiff/tif_dirinfo.c: Fixed definition for TIFFTAG_RICHTIFFIPTC,
+       the writecount should have uint32 type. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=662
+
+       * libtiff/tif_write.c: Fixed wrong if() statement in
+       TIFFAppendToStrip() function as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=660
+
+2004-11-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Change definition for TIFFTAG_EXTRASAMPLES
+       field. The caller should supply a count when setting this field. As
+       per bug
+
+        http://bugzilla.remotesensing.org/show_bug.cgi?id=648
+       
+       * libtiff/{tif_jpeg.c, tif_ojpeg.c}: TIFFTAG_JPEGTABLES should have
+       uint32 count. Use this type everywhere.
+
+2004-11-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_next.c: avoid use of u_long and u_char types.  Bug 653.
+
+2004-11-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2rgba.c: removed extra newlines in usage message.
+
+2004-10-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * libtiff/tif_dirwrite.c: Improvements in tag writing code.
+
+       * tools/tiff2ps.c: Fixed wrong variable data type when read Position
+       tags (Tristan Hill).
+
+2004-10-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tiffiop.h: added fallback definition of assert() if we
+       don't have assert.h.
+
+2004-10-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_fax3.c: Fixed case with the wrong decode routines
+       choosing when the incorrect Group4Options tag set. As per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=323
+
+       * libtiff/tif_dirwrite.c: Fixed problem with passing count variable of
+       wrong type when writing the TIFF_BYTE/TIFF_SBYTE tags in
+       TIFFWriteNormalTag().
+
+2004-10-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps.c: Fixed wrong variable data type when read Resolution
+       tags (Peter Fales).
+
+       * tools/{bmp2tiff.c, raw2tiff.c}: Get rid of stream I/O functions.
+
+2004-10-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2pdf.c: added casts to avoid warnings.
+
+       * libtiff/libtiff.def: Added several more entry points required
+       to link fax2tiff.c against the DLL on windows. 
+
+2004-10-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure, configure.ac: Added --enable-rpath option to embed linker
+       paths into library binary.
+
+2004-10-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c: Check the malloc return value (Dmitry V. Levin).
+
+       * libtiff/{tif_strip.c, tif_tile.c}: Zero division problem fixed
+       (Vladimir Nadvornik, Dmitry V. Levin).
+
+2004-10-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.0 released.
+
+2004-10-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_jpeg.c: There seems to be no need to include stdio.h
+       in this file so its inclusion is removed.  Including stdio.h
+       sometimes incurs an INT32 typedef conflict between MinGW's
+       basetsd.h and libjpeg's jmorecfg.h.
+
+2004-10-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * man/bmp2tiff.1: Added manual page for bmp2tiff utility.
+
+2004-10-13  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcmp.c (leof): Renamed from 'eof' in order to avoid
+       conflict noticed under MinGW.
+       * ltmain.sh: Fix for MinGW compilation.
+
+2004-10-13  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * man/tiffsplit.1: Fixed to indicate using aaa-zzz, not aa-zz.
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=635
+
+2004-10-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirread.c, tif_jpeg.c, tif_luv.c, tif_ojpeg.c,
+       tif_pixarlog.c, tif_write.c}: Handle the zero strip/tile sizes
+       properly (Dmitry V. Levin, Marcus Meissner).
+
+2004-10-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Type of the TIFFTAG_SUBIFD field changed
+       to TIFF_IFD.
+
+2004-10-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/bmp2tif.c: Check the space allocation results.
+
+2004-10-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Initialize td_tilewidth and td_tilelength fields
+       of the TIFFDirectory structure with the 0 instead of -1 to avoid
+       confusing integer overflows in TIFFTileRowSize() for striped images.
+
+       * tools/tiff2pdf.c: Fixed TransferFunction tag handling reported
+       by Ross A. Finlayson.
+
+       * libtiff/tif_dir.c: Fixed custom tags handling as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=629
+
+2004-10-08  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation
+       of tif_fieldinfo.  
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=630
+
+2004-10-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * contrib/iptcutil/README: Added the missing README which goes
+       along with iptcutil.
+
+2004-10-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_compress.c: Improved error reporting in
+       TIFFGetConfiguredCODECs() (Dmitry V. Levin).
+
+2004-10-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.0beta2 released.
+
+       * libtiff/{tif_aux.c, tif_compress.c, tif_dirinfo.c, tif_dirwrite.c,
+       tif_extension.c, tif_fax3.c, tif_luv.c, tif_packbits.c,
+       tif_pixarlog.c, tif_write.c}: Added checks for failed memory
+       allocations and integer overflows (Dmitry V. Levin).
+
+       * libtiff/tiff.h: Missed TIFF_BIGTIFF_VERSION constant added.
+
+2004-10-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_open.c: added a more informative message if a BigTIFF
+       file is opened.
+
+2004-09-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: changed type of XMLPacket (tag 700) to 
+       TIFFTAG_BYTE instead of TIFFTAG_UNDEFINED to comply with the info
+       in the Adobe XMP Specification.
+
+2004-09-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_jpeg.c, tif_pixarlog.c}: Use _TIFFmemset() instead of
+       memset().
+
+       * libtiff/{tif_dirread.c, tif_strip.c, tif_tile.c}: Applied patches
+       from Dmitry V. Levin to fix possible integer overflow problems.
+
+2004-09-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_getimage.c: Check for allocated buffers before clearing
+       (Dmitry V. Levin).
+
+2004-09-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.h, tif_dir.c, tif_dirread.c, tif_write.c}:
+       Optimize checking for the strip bounds. 
+
+       * libtiff/{tif_dirread.c, tif_strip.c}: TIFFScanlineSize() and
+       TIFFRasterScanlineSize() functions report zero in the case of integer
+       overflow now. Properly handle this case in TIFFReadDirectory()
+       (patches from Dmitry V. Levin).
+
+2004-09-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirinfo.c, tif_strip.c, tif_tile.c}: Use TIFFhowmany8()
+       macro where appropriate.
+
+       * tools/tiff2bw.c: Write ImageWidth/Height tags to output file, as
+       noted by Gennady Khokhorin.
+
+       * libtiff/tif_dirread.c: Always check the return values, returned
+       by the _TIFFmalloc() (Dmitry V. Levin).
+
+       * libtiff/tif_dir.c: Fixed possible integer overflow _TIFFset*Array()
+       functions (Dmitry V. Levin).
+
+       * libtiff/{tif_dirread.c, tif_dir.c, tif_write.c}:
+       Potential memory leak fixed in TIFFReadDirectory(), _TIFFVSetField(),
+       TIFFGrowStrips() (found by Dmitry V. Levin).
+
+2004-09-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffio.h, tif_compress.c}: Added TIFFGetConfiguredCODECs()
+       to get the list of configured codecs.
+
+       * libtiff/{tiffiop.h, tif_dirread.c}: More overflow fixes from
+       Dmitry V. Levin.
+
+2004-09-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Applied patch from Dmitry V. Levin to fix
+       possible integer overflow in CheckMalloc() function.
+
+2004-09-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffiop.h, tif_strip.c}: Use TIFFhowmany8() macro instead
+       of plain TIFFhowmany() where appropriate.
+
+2004-09-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_getimage.c: Initialize arrays after space allocation.
+
+2004-09-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.0beta released.
+
+       * libtiff/{tif_luv.c, tif_next.c, tif_thunder.c}: Several buffer
+       overruns fixed, as noted by Chris Evans.
+
+2004-09-14  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * commit: Added a script to make it more convenient to commit
+       updates.  The CVS commit message is extracted from this ChangeLog
+       file.
+
+2004-09-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, configure, aclocal.m4, libtiff/{mkspans.c, tif_fax3.c,
+       tif_getimage.c, tif_luv.c, tif_lzw.c, tif_ojpeg.c, tif_packbits.c,
+       tif_predict.c, tif_read.c, tif_swab.c, tif_thunder.c, tif_write.c,
+       tif_dir.c, tif_dirread.c, tif_dirwrite.c, tif_jpeg.c, tif_dirinfo.c,
+       tif_vms.c, tif_print.c, tif_strip.c, tif_tile.c, tif_dir.h,
+       tif_config.h.in, tiffiop.h}:
+       Get rid of BSD data types (u_char, u_short, u_int, u_long).
+
+2004-09-13  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiff.h: Fix column tagging. Reference current Adobe XMP
+       specification. Reference libtiff bug tracking system to submit
+       private tag additions.
+
+2004-09-12  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffgt.c: Include "tif_config.h".
+
+       * configure.ac: Use AM_PROG_CC_C_O since it is now needed to build
+       tiffgt.  This results in the 'compile' script being added to the
+       project.
+
+       * tools/Makefile.am (tiffgt_CFLAGS): Add extra build options
+       required to find OpenGL headers necessary to build tiffgt.  Also
+       ensure that the libtiff that we built is used rather than some other
+       libtiff installed on the system.
+
+2004-09-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, acinclude.m4, aclocal.m4: New macros to detect GLUT
+       libraries.
+
+2004-09-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Pass library configuration defines via
+       tif_config.h rather than extending CPPFLAGS. Configure a
+       libtiff/tiffconf.h in order to satisfy application requirements
+       (not used by library build). Do not define _POSIX_C_SOURCE=2 since
+       this causes failure to build on systems which properly respect
+       this request.
+
+       * libtiff/tiffconf.h.in: New file to act as the template for the
+       configured tiffconf.h
+
+       * libtiff/files.lst (HDRS): Install the configured tiffconf.h.
+
+2004-09-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/internals.html: Split off a discussion of adding new tags
+       into addingtags.html.
+
+2004-09-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * test/{ascii_tag.c, long_tag.c}: Preliminary test suite added.
+
+       * tools/tiff2pdf.c: Fixed reading TransferFunction tag as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=590
+
+       * libtiff/tif_print.c: Fixes in InkNames and NumberOfInks reporting.
+
+       * libtiff/tif_dirread.c: Don't reject to read tags of the
+       SamplesPerPixel size when the tag count is greater than number of
+       samples as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=576
+
+       * libtiff/tiff.h: Use _TIFF_DATA_TYPEDEFS_ guardian to switch off
+       defining int8/uint8/... etc. types. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=607
+
+2004-09-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2ps.c, tools/tiffmedian.c: fiddle with include files
+       to avoid compile warnings about getopt() and a few other things.
+
+2004-09-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Use memcpy() function instead of pointer
+       assigning magic in TIFFFetchFloat().
+
+2004-09-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffio.h, tif_open.c}: Applied patches from Joris Van Damme
+       to avoid requirement for tiffiop.h inclusion in some applications. See
+       here
+
+       http://www.asmail.be/msg0054799560.html
+       
+       for details.
+
+       * tools/fax2tiff.c: Use the new functions in the code.
+
+2004-08-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Initialize arrays properly.
+
+       * tools/tiff2ps.c: Avoid zero division in setupPageState() function;
+       properly initialize array in PSDataBW().
+
+2004-08-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: More fixes for bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=590
+
+       from Ross Finlayson.
+
+2004-08-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps.c: Fixed problem with uninitialized values.
+
+       * libtiff/tif_dir.c: Initialize tif_foundfield data member in the
+       TIFFDefaultDirectory() (in addition to 2004-08-19 fix).
+
+       * tools/tiff2pdf.c: Fixed a bunch of problems as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=590
+
+2004-08-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Applied patch from Ross Finlayson that checks
+       that the input file has compression, photometric interpretation,
+       etcetra, tags or if not than a more descriptive error is returned.
+
+       * libtiff/tif_dirread.c: Fixed problem in TIFFReadDirectory() in the
+       code, responsible for tag data type checking.
+
+2004-08-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffiop.h, tif_dirinfo.c}: Fixed problem with the static
+       variable as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=593
+
+2004-08-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/ras2tiff.c: Fixed issue with missed big-endian checks as per
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=586
+
+2004-08-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_config.h.in, tif_config.h.vc}: config.h.in and
+       config.h.vc files renamed in the tif_config.h.in and tif_config.h.vc.
+
+2004-07-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_lzw.c: LZW compression code is merged back from the
+       separate package. All libtiff tools are updated to not advertise an
+       abcence of LZW support.
+
+2004-07-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiffio.h: Revert thandle_t back to void* type.
+
+2004-07-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_read.c, tif_tile.c, tif_strip.c}: Fixes in error
+       messages, as suggested by Bernd Herd.
+
+2004-07-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Call TIFFError() instead of producing warnings
+       when setting custom tags by value. Reported by Eric Fieleke.
+
+2004-06-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/bmp2tiff.c: Add missed RawsPerStrip setting.
+
+2004-06-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/bmp2tiff.c: Added new utility to convert Windows BMP files
+       into TIFFs.
+
+2004-06-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.7.0alpha released.
+
+2004-06-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiff.h, tif_dirwrite.c, tif_fax3.c, tif_packbits.c,}: Get rid
+       of ugly 64-bit hacks, replace them with the clever (autoconf based )
+       ones :-).
+
+       * libtiff/tiffio.h: Define thandle_t as int, not void* (may cause
+       problems in 64-bit environment).
+
+2004-06-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c: tiffset now can set any libtiff supported tags.
+       Tags can be supplied by the mnemonic name or number.
+
+       * libtiff/{tiffio.h, tif_dir.h, tif_dirinfo.c,}: Added two new
+       functions TIFFFindFieldInfoByName() and TIFFFieldWithName().
+
+2004-05-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_ojpeg.c: Fixed problem with duplicated SOI and SOF
+       markers as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=581
+
+2004-05-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Don't forget to copy Photometric
+       Interpretation tag.
+
+2004-05-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_open.c, tiffio.h}: New function added:
+       TIFFIsBigEndian(). Function returns nonzero if given was file written
+       in big-endian order.
+
+       * tools/tiffsplit.c: Fixed problem with unproperly written multibyte
+       files. Now output files will be written using the same byte order
+       flag as in the input image. See
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=574
+       
+       for details.
+       
+2004-05-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_print.c: added (untested) support for printing
+       SSHORT, SLONG and SRATIONAL fields.
+
+       * tools/tiffcp.c: close output file on normal exit.
+
+2004-05-17  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_fax3.c: Avoid reading CCITT compression options
+       if compression type mismatches. See
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=565
+
+2004-04-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_strip.c: Never return 0 from the
+       TIFFNumberOfStrips().
+
+2004-04-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Workaround for broken TIFF writers which
+       store single SampleFormat value for multisampled images. See
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=562
+
+2004-04-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, libtiff/{tiff.h, config.h.in}: Added tests for int8,
+       int16 and int32 types to avoid complains on some compilers. Details at
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+
+2004-04-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Fixed problem with unaligned access as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=555
+
+2004-04-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_write.c: Allow in-place updating of the compressed
+       images (don't work properly with all codecs). For details see GDAL bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=534
+
+2004-04-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_jpeg.c: Workaround for wrong sampling factors used
+       in the Intergarph JPEG compressed TIFF images as per bug:
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=532
+
+2004-04-04  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_open.c: close clientdata if TIFFClientOpen() fails
+       via bad2. 
+
+2004-03-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Properly set Photometric Interpretation in case of
+       JPEG compression of grayscale images.
+
+       * tools/tiffcp.c: Don't emit warnings when Orientation tag does not
+       present in the input image.
+
+2004-03-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * {many}: The first attempt to switch to autotools.
+
+2004-03-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_open.c: Use dummy mmap/munmap functions in
+       TIFFClientOpen() when the appropriate client functions was not
+       supplied by user.
+
+2004-03-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/ycbcr.c: fixed main() declaration as per:
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=513
+
+2004-02-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Copy JPEGTables tag contents for JPEG compressed 
+       images. Reported by Artem Mirolubov.
+
+       * libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED 
+       tag type in TIFFFetchNormalTag() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=508
+
+2004-02-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_codec.c: Fixed typo in TIFFInitPackBits name as per:
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=494
+
+2004-02-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_fax3.c: Fixed problem with CCITT encoding modes as per
+       bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=483
+
+       But we need more work on fax codec to support update mode.
+
+2004-01-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def: Added TIFFCurrentDirOffset, TIFFWriteCheck,
+       TIFFRGBAImageOK, and TIFFNumberOfDirectories as suggested by 
+       Scott Reynolds. 
+
+2004-01-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiff.h: Fixed tag definitions for TIFFTAG_YCLIPPATHUNITS
+       and TIFFTAG_INDEXED as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=475
+
+       * libtiff/{tif_win32.c, tif_unix.c}: Check whether the pointer is
+       NULL before proceeding further as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=474
+
+       Check results, returned by the TIFFFdOpen() before returning and close
+       file if TIFFFdOpen() failed as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=468
+       
+       * libtiff/tif_open.c: More fixes for
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=468
+
+2004-01-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{libtiff.def, tif_close.c, tiffio.h, tif_open.c}: Separate
+       TIFFCleanup() from the TIFFClose() in order to fix the bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=468
+
+       * tools/tiffcp.c: Fixed problem with wrong interpretation of the
+       InkNames tag as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=466
+
+       Memory leak fixed.
+
+2004-01-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: Fixed handling of writable ASCII tags that
+       are field_passcount=TRUE properly.  Arguably anonymous custom tags
+       should be declared as passcount=FALSE, but I don't want to change
+       that without a careful review. 
+
+2004-01-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_write.c: Fixed reporting size of the buffer in case of
+       stripped image in TIFFWriteBufferSetup(). As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=460
+
+2004-01-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Incomplete cleanup in TIFFFreeDirectory(),
+       patch from Gerben Koopmans.
+
+       * libtiff/tif_dirread.c: Check field_passcount value before setting
+       the value of undefined type, patch from Gerben Koopmans.
+
+2004-01-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Fixed problem with wrong Photometric setting for
+       non-RGB images.
+
+2003-12-31  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_win32.c: Fixed problem with _TIFFrealloc() when the NULL
+       pointer passed. Patch supplied by Larry Grill.
+
+       * libtiff/{tiff.h, tif_fax3.c}:Fixes for AMD 64 platform as
+       suggested by Jeremy C. Reed.
+
+2003-12-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 3.6.1 released.
+
+2003-12-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * config.guess, config.sub: Updated from the recent upstream.
+
+2003-12-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_color, tif_getimage.c, tiffio.h}, man/TIFFcolor.3t:
+       More cleanups in color conversion interface, added appropriate manual
+       page.
+
+2003-12-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_extension.c, tif_dirinfo.c, tiff.h}: Warnings fixed as
+       per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=357
+
+       * tools/tiff2ps.c: Added support for alpha channel. Fixes
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=428
+
+       * libtiff/{libtiff.def, tif_color.c, tif_getimage.c, tiffio.h}:
+       Interface for Lab->RGB color conversion is finally cleaned up.
+       Added support for ReferenceBlackWhite tag handling when converted from
+       YCbCr color space. The latter closes
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=120
+
+2003-12-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_getimage.c, tiffio.h}: Avoid warnings.
+
+       * libtiff/makefile.vc, tools/makefile.vc: Support for IJG JPEG
+       library.
+
+2003-12-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_getimage.c, tif_aux.c}: Read WhitePoint tag from the
+       file and properly use it for CIE Lab->RGB transform.
+
+2003-12-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_getimage.c, tif_color.c, tiffio.h}: YCbCr->RGB
+       conversion routines now in the tif_color.c module. New function
+       TIFFYCbCrtoRGB() available in TIFF API.
+
+       * libtiff/tif_dirwrite.c: Handle TIFF_IFD tag type correctly.
+
+2003-12-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_getimage.c, tif_color.c, tiffio.h}: Improvements in
+       CIE Lab conversion code. Start moving YCbCr stuff to the tif_color.c
+       module.
+
+       * libtiff/{tif_getimage.c, tiffio.h}, man{TIFFReadRGBAImage.3t,
+       TIFFReadRGBAStrip.3t, TIFFReadRGBATile.3t, TIFFRGBAImage.3t}:
+       Finally resolved problems with orientation handling. TIFFRGBAImage
+       interface now properly supports all possible orientations, i.e. images
+       will be flipped both in horizontal and vertical directions if
+       required. 'Known bugs' section now removed from the appropriate manual
+       pages. Closed bug entry:
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=322
+
+2003-12-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Fixed order of the parameters in TIFFError()
+       function calls as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=440
+
+2003-11-28 Ross Finlayson  <libtiff@apexinternetsoftware.com>
+
+       * tools/tiff2pdf.c:  Some bugs fixed.
+
+2003-11-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_luv.c: Fixed bug in 48-bit to 24-bit conversion routine,
+       reported by Antonio Scuri.
+
+       * man/tiff2pdf.1: Few improvements in page layout.
+
+       * Makefile.in, /man/Makefile.in, /html/man/tiff2pdf.1.html:
+        Added support fpr tiff2pdf manual page.
+
+2003-11-26 Ross Finlayson  <libtiff@apexinternetsoftware.com>
+
+       * /man/tiff2pdf.1:  File added to repository.
+
+2003-11-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * Makefile.in, /tools/{Makefile.in, makefile.vc}:
+        Added support fpr tiff2pdf utility.
+
+2003-11-25  Ross Finlayson  <libtiff@apexinternetsoftware.com>
+
+       * /tools/tiff2pdf.c:  File added to repository.
+
+2003-11-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * /tools/raw2tiff.c: sqrtf() replaced with sqrt().
+
+2003-11-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * /tools/raw2tiff.c: #include <getopt.h> removed.
+
+       * tools/{Makefile.in, tiffgt.c}: Unmaintained and platform dependent
+       sgigt utility removed and replaced with the completely rewritten
+       portable tiffgt tool (depend on OpenGL and GLUT). Initial revision,
+       there is a lot of things to improve.
+
+       * libtiff/tif_ojpeg.c: TIFFVGetField() function now can properly
+       extract the fields from the OJPEG files. Patch supplied by Ross
+       Finlayson.
+
+       * libtiff/{tiffio.h, tif_codec.c}, man/{libtiff.3t, TIFFcodec.3t}:
+       Added new function TIFFIsCODECConfigured(), suggested by Ross
+       Finlayson.
+
+2003-11-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Implemented binary search in
+       _TIFFMergeFieldInfo(). Patch supplied by Ross Finlayson.
+
+       * libtiff/tif_dir.h: _TIFFFindOrRegisterdInfo declaration replaced
+       with _TIFFFindOrRegisterFieldInfo as reported by Ross Finlayson.
+
+2003-11-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirread.c: do not mark all anonymously defined tags to be 
+       IGNOREd.  
+
+2003-11-17  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * contrib/pds/{tif_pdsdirread.c, tif_pdsdirwrite.c}: Use
+       TIFFDataWidth() function insted of tiffDataWidth array.
+
+2003-11-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiff.h, tif_dirinfo.c}: Added support for IFD (13)
+       datatype, intruduced in "Adobe PageMaker TIFF Tech. Notes".
+
+2003-11-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Makefile.in: fixed missing backslash for tif_color.c in list.
+
+2003-11-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_color.c, tif_getimage.c, tiffio.h, Makefile.in}:
+       New color space conversion code: CIE L*a*b* 1976 images now supported
+       by the TIFFRGBAImage interface. All introduced routines go to new
+       module tif_color.c. Eventually all color conversion functions should
+       be moved there.
+
+2003-11-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/{ras2tiff.c, rasterfile.h}: Properly determine SUN Rasterfiles
+       with the reverse byte order (it is reported by the magic header
+       field). Problem reported by Andreas Wiesmann.
+
+       * tools/raw2tiff.c, man/raw2tiff.1: Few improvements in correlation
+       calculation function. Guessing mechanics now documented in manual page.
+
+2003-11-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/raw2tiff.c: Implemented image size guessing using
+       correlation coefficient calculation between two neighbour lines.
+
+2003-11-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_tile.c: remove spurious use of "s" (sample) in the 
+       planarconfig_contig case in TIFFComputeTile().
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=387
+
+2003-11-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * libtiff/tiffiop.h: New macros: TIFFmax, TIFFmin and TIFFrint.
+       
+2003-11-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffio.h, tif_strip.c}, man/{TIFFstrip.3t, libtiff.3t}:
+       Added TIFFRawStripSize() function as suggested by Chris Hanson.
+
+2003-11-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_lzw.c, tif_fax3.c}: Proper support for update mode as
+       per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=424
+
+2003-10-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/libtiff.def: Added TIFFReadRGBAImageOriented.
+
+       * html/build.html: Added note about GNU make requirement.
+
+2003-10-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * Makefile.in: Fixes in using MAKEFLAGS as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=418
+
+       * port/install.sh.in: Option -p added to the mkdir command to create
+       all directory tree structure before installing.
+
+2003-10-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * /tools/tiff2ps.c: #include <strings.h> replaced with the
+       #include <string.h>.
+
+2003-10-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * Makefile.in: Add an absolute path to the test_pics.sh call.
+
+2003-10-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tiffcomp.h: #define _BSDTYPES_DEFINED when defining BSD
+       typedefs.
+
+2003-10-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure, libtiff/{Makefile.in, mkversion.c}:
+       Relative buildings fixed.
+
+       * tools/Makefile.in: Added "-I../libtiff" to the tiffset building
+       rule.
+
+2003-10-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * Makefile.in: Added missed v3.6.0.html.
+
+       * libtiff/tiffio.h: Typo fixed: ORIENTATION_BOTTOMLEFT replaced with
+       ORIENTATION_BOTLEFT.
+
+2003-10-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * 3.6.0 final release.
+
+2003-10-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_getimage.c, tiffio.h}, man/TIFFReadRGBAImage.3t: New
+       function TIFFReadRGBAImageOriented() implemented to retrieve raster
+       array with user-specified origin position as suggested by Jason Frank.
+       See
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=322
+
+       for details.
+       
+       * tools/tiff2rgba.c: Switched to use TIFFReadRGBAImageOriented()
+       instead of TIFFReadRGBAImage().
+
+       * tools/tiff2ps.c: Fixed possible endless loop as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=404
+
+2003-09-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Check field counter against number of fields
+       in order to fix
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=366
+
+       * libtiff/tif_fax3.c: Fix wrong line numbering as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=342
+
+2003-09-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tiffiop.h, tif_dirread.c, tif_dir.c, tif_open.c,
+       tif_close.c}: Store a list of opened IFD to prevent looping as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=383
+
+2003-09-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: More fixes for EstimateStripByteCounts(). See
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=358
+
+2003-08-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffmedian.c: int declaration replaced with the uint32 to
+       support large images as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=382
+
+2003-08-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/Makefile.in: Fixed problem with building in different
+       directory.
+
+       * tools/tiff2ps.c: Added missing #include <strings.h>.
+
+       * libtiff/tif_dirwrite.c: More fixes for custom tags code
+       from Ashley Dreier.
+
+2003-08-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps.c: Added page size setting when creating PS Level 2.
+       Patch submitted by Balatoni Denes (with corrections from Tom
+       Kacvinsky).
+
+       * tools/tiff2ps.c: Fixed PS comment emitted when FlateDecode is
+       being used. Reported by Tom Kacvinsky.
+
+       * libtiff/tif_dirwrite.c: Fixed problem with custom tags writing,
+       reported by Ashley Dreier.
+
+       * libtiff/tif_print.c: Fixed problem with float tags reading, support
+       for printing RATIONAL and BYTE tags added.
+
+2003-08-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_lzw.c: Move LZW codec state block allocation back to
+       TIFFInitLZW(), because its initialization in LZWSetupDecode() cause
+       problems with predictor initialization. Remove O_RDONLY check during
+       state block allocation to be able open LZW compressed files in update
+       mode.
+
+       Problem exist for libtiff version of the tif_lzw.c module. One from
+       lzw-compression-kit hasn't such troubles.
+
+2003-08-04  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_write.c: modified tif_write.c so that the various
+       encoded write functions use tif_postdecode() to apply byte order
+       swapping (swab) to the application passed data buffer if the same
+       would be done when reading.  This allows us to write pixel data with
+       more than 8 bits per sample to existing files of a non-native byte 
+       order.  One side effect of this change is the applications buffer
+       itself is altered in this case by the act of writing. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=171
+
+2003-07-25  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_open.c: avoid signed/unsigned casting warning
+       initializing typemask as per patch from J.A. Strother.
+
+       * tools/tiffcp.c: fixed signed/unsigned casting warning.
+
+       * libtiff/tif_print.c: dos2unix conversion.
+
+       * tools/tiffsplit.c: increased the maximum number of pages that
+       can be split.  Patch provided by Andrew J. Montalenti.
+
+2003-07-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/raw2tiff.c: Added option `-p' to explicitly select color
+       space of input image data. Closes
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=364
+
+2003-07-08  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_aux.c, tif_codec.c, tif_dir.c, tif_dirread.c, tif_extension.c,
+       tif_fax3.c, tif_getimage.c, tif_luv.c, tif_lzw.c, tif_next.c, 
+       tif_packbits.c, tif_predict.c, tif_print.c, tif_swab.c, tif_thunder.c:
+       avoid casting warning at /W4. 
+
+2003-07-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/thumbnail.c: Memory leak fixed as reported by Robert S. Kissel.
+
+2003-06-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_pixarlog.c: Unused variables removed.
+
+       * libtiff/{tif_dirread.c, tif_dir.c}: Fixed problem with
+       EstimateStripByteCounts() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=358
+
+       * libtiff/{tif_dirwrite.c, tif_packbits.c}: Fixed compilation on
+       64-bit architectures as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=357
+
+       * libtiff/tif_dirinfo.c: TIFFDataWidth() returns 0 in case of
+       unknown data type.
+       
+2003-06-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_print.c: fixed some serious bugs when printing
+       custom tags ... almost certain to crash. 
+
+       * libtiff/tif_dirread.c: Don't ignore custom fields that are
+       autodefined.  Not sure how this got to be like this.
+
+2003-06-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * 3.6.0 Beta2 released.
+
+       * tools/tiffcmp.c, man/tiffcmp.1: Fixed problem with unused data
+       comparing as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=349
+
+       `-z' option now can be used to set the number of reported different
+       bytes.
+       
+2003-06-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c, man/tiffcp.1: Added possibility to specify value -1
+       to -r option to get the entire image as one strip. See
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=343
+
+       for details.
+
+2003-06-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Set the correct RowsPerStrip and PageNumber
+       values as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=343
+
+2003-05-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: modified segment_height calculation to always
+       be a full height tile for tiled images.  Also changed error to just
+       be a warning.
+
+2003-05-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/fax2tiff.c: Page numbering fixed, as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=341
+
+2003-05-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * contrib/ojpeg/{Makefile.in, jdhuff.h, jinclude.h, ojpeg.c, README},
+       configure, Makefile.in: Switched back to the old behaviour. Likely
+       better solution should be found for OJPEG support.
+
+2003-05-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/mkversion.c: Fixed problem with wrong string size when
+       reading RELEASE-DATE file.
+
+2003-05-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps.c: Fixed bug in Ascii85EncodeBlock() function: array
+       index was out of range.
+
+2003-05-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * contrib/ojpeg/{Makefile.in, jdhuff.h, jinclude.h, ojpeg.c, README},
+       configure, Makefile.in: Improved libtiff compilation with OJPEG
+       support. Now no need for patching IJG JPEG library, hack requred by
+       libtiff will be compiled and used in-place. Implemented with
+       suggestion and help from Bill Allombert, Debian's libjpeg maintainer.
+
+       * libtiff/tif_aux.c: Properly handle TIFFTAG_PREDICTOR in
+       TIFFVGetFieldDefaulted() function.
+
+2003-05-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/ppm2tiff.c: PPM header parser improved: now able to skip
+       comments.
+
+       * tools/tiffdither.c: Fixed problem with bit fill order tag setting:
+       was not copied from source image.
+
+       * libtiff/getimage.c: Workaround for some images without correct
+       info about alpha channel as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=331
+
+2003-04-29  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps.c, man/tiff2ps.1: Add ability to generate PS Level 3.
+       It basically allows one to use the /flateDecode filter for ZIP
+       compressed TIFF images. Patch supplied by Tom Kacvinsky. Fixes
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=328
+
+       * tools/tiff2ps.c: Force deadzone printing when EPS output specified
+       as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=325
+
+2003-04-17  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Removed additional check for StripByteCounts
+       due to problems with multidirectory images. Quality of error messages
+       improved.
+
+2003-04-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Fixed problem with colorspace conversion for JPEG
+       encoded images. See bug entries
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=275
+
+       and
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=23
+
+       * libtiff/tif_dirread.c: Additional check for StripByteCounts
+       correctness. Fixes
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=320
+
+2003-03-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/{fax2ps.c, fax2tiff.c, gif2tiff.c, pal2rgb.c, ppm2tiff.c,
+       ras2tiff.c, raw2tiff.c, rgb2ycbcr.c, thumbnail.c, tiff2bw.c,
+       tiff2ps.c, tiff2rgba.c, tiffcp.c, tiffdither.c, tiffinfo.c,
+       tiffmedian.c}: Added library version reporting facility to all tools.
+
+2003-03-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * port/install.sh.in: Fixed problems with install producing paths
+       like ///usr/local/lib on cygwin.
+
+2003-02-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/fax2tiff.c, man/fax2tiff.1: New switch (-X) to set width of
+       raw input page. Patch supplied by Julien Gaulmin. See
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=293
+
+       for details.
+
+2003-02-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c: fixed up the tif_postdecode settings
+       responsible for byte swapping complex image data.
+
+       * libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
+       LZWSetupDecode().  Needed to read LZW files in "r+" mode.
+
+2003-02-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/ppm2tiff.c: Fixed problem with too many arguments.
+
+2003-02-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/raw2tiff.c: Memory leak fixed.
+
+2003-02-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/fax2tiff.c, man/fax2tiff.1: Applied patch from Julien Gaulmin
+       (thanks, Julien!). More switches for fax2tiff tool for better control
+       of input and output. Details at
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=272
+
+2003-02-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Modified to defer initialization of jpeg
+       library so that we can check if there is already any tile/strip data
+       before deciding between creating a compressor or a decompressor. 
+
+2003-01-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
+       a pre-existing compressed image.  That is, image writing to 
+       pre-existing compressed images is not allowed.
+
+       * libtiff/tif_open.c: Removed error if opening a compressed file
+       in update mode. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=198
+
+2003-01-31  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * config.guess, config.sub: Updated to recent upstream versions.
+
+2003-01-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * cut 3.6.0 Beta release.
+
+2002-12-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * tools/fax2ps.c, man/fax2ps.1: Page size was determined
+       in wrong way as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=239
+
+2002-12-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Allow wrong sized arrays in 
+       TIFFFetchStripThing(). 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=49
+
+2002-12-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c: fix problem with test on td_customValueCount.
+       Was using realloc even first time.  Fix by Igor Venevtsev.
+
+2002-11-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c: fixed bug with resetting an existing custom
+       field value.
+
+       * libtiff/tif_dir.c: Fixed potential problem with ascii "custom" 
+       tags in TIFFVGetField() ... added missing break.
+
+2002-10-14  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2ps.c: fixes a problem where "tiff2ps -1e" did not make
+       the scanline buffer long enough when writing rgb triplets.
+       The scanline needs to be 3 X the number of dots or else it will
+       contain an incomplete triplet and programs that try to separate
+       the eps by redefining the colorimage operator will get messed up.
+       Patch supplied by William Bader.
+
+       * Makefile.in: added tif_extension.c to file list as per 
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=218.
+
+2002-10-11  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * configure, config.site, libtiff/{tif_unix.c, Makefile.in}: Fix for
+       large files (>2GiB) supporting. New option in the config.site:
+       LARGEFILE="yes". Should be enough for I/O of the large files.
+
+2002-10-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/html/v3.6.0.html: new release notes.
+
+       * libtiff/index.html: removed faq, cvs snapshot cruft.  Added email
+       link for Andrey.  Pointer to v3.6.0.html.
+
+       * libtiff/Makefile.in: added direct rule for tiffvers.h for release.
+
+2002-10-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+       * tools/tiff2ps.c, man/tiff2ps.1: Applied patch form Sebastian Eken
+       (thanks, Sebastian!). New switches:
+       -b # for a bottom margin of # inches
+       -c   center image
+       -l # for a left margin of # inches
+       -r   rotate the image by 180 degrees
+       New features merged with code for shrinking/overlapping.
+       Previously added -c and -n switches (for overriding PS units) renamed
+       in -x and -y respectively.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=200
+
+       * html/man/*.html: Updated from actual manual pages.
+
+2002-10-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: fixed problem with boolean defined with wrong
+       size on windows.  Use #define boolean hack.  
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=188
+
+       * libtiff/tiff.h: Don't do special type handling in tiff.h unless
+       USING_VISUALAGE is defined.
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+
+2002-10-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tiff.h: added COMPRESSION_JP2000.
+
+2002-10-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
+       by the TIFFFetchByteArray() function. Should finally resolve
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=52
+       
+       * configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT
+
+       * html/Makefile.in: New targets added: html and groffhtml for
+       producing HTML representations of the manual pages automatically.
+       html target uses man2html tool, groffhtml uses groff tool.
+       
+2002-09-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
+       from John H. DuBois III.  
+
+2002-09-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * Makefile.in, /man/{raw2tiff.1, Makefile.in, libtiff.3}: Added
+       manual page for raw2tiff(1) tool.
+       
+2002-09-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * /libtiff/{tiffio.h, tif_dir.h}: TIFFDataWidth() declaration moved to
+       the tiffio.h header file.
+       
+       * Makefile.in, /man/{TIFFDataWidth.3t, Makefile.in, libtiff.3}: Added
+       manual page for TIFFDataWidth() function
+
+2002-09-08  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
+       as per http://bugzilla.remotesensing.org/show_bug.cgi?id=196.
+
+       * tools/tiff2ps.c: Don't emit BeginData/EndData DSC comments
+       since we are unable to properly include the amount to skip. 
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=80
+
+2002-09-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * /libtiff/tif_dirread.c: Fixed problem with SBYTE type data fetching
+       in TIFFFetchByteArray(). Problem described at
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=52
+
+2002-08-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * /libtiff/tif_dirinfo.c: Further additions to free custom fields
+       in _TIFFSetupFieldInfo() function.
+       See http://bugzilla.remotesensing.org/show_bug.cgi?id=169 for details.
+
+       * /libtiff/tif_lzw.c: Additional consistency checking added in
+       LZWDecode() and LZWDecodeCompat().
+       Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=190
+       and http://bugzilla.remotesensing.org/show_bug.cgi?id=100
+       
+       * /libtiff/tif_lzw.c:
+       Added check for valid code lengths in LZWDecode() and
+       LZWDecodeCompat(). Fixes
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=115
+
+2002-08-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * /libtiff/{Makefile.vc, libtiff.def}:
+       Missed declarations added.
+
+2002-08-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
+       return code from the underlying pick function.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=177
+
+       * tif_dir.h: changed FIELD_CODEC to 66 from 64 to avoid overlap 
+       with FIELD_CUSTOM as mentioned in bug 169.
+
+       * tif_close.c: added logic to free dynamically created anonymous
+       field definitions to correct a small memory leak.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=169
+
+2002-08-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * /tools/{raw2tiff.c, Makefile.in, Makefile.lcc, Makefile.vc}:
+       New tool: raw2tiff --- raw images to TIFF converter. No manual page yet.
+
+2002-07-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Fixed problem with setting of nrows in 
+       JPEGDecode() as per bugzilla bug (issue 1):
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=129
+
+       * libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
+       fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
+       present in the tiff tags. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=168
+
+       * libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
+       TIFFWriteScanline() now set tif_row explicitly in case the codec has
+       fooled with the value. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=129
+
+2002-06-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * /tools/tiff2ps.c: Added workaround for some software that may crash
+       when last strip of image contains fewer number of scanlines than
+       specified by the `/Height' variable. See
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=164
+       for explanation.
+
+2002-06-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps, man/tiff2ps.1: New functionality for tiff2ps utility:
+       splitting long images in several pages. See
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=142 for explanation.
+       Patch granted by John Williams <williams@morinda.com>.
+
+2002-06-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/contrib/win95: renamed to contrib/win_dib.  Added new 
+       Tiffile.cpp example of converting TIFF files into a DIB on Win32.  
+       This one is described in:
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=143
+
+       * libtiff/tif_ojpeg.c: Major upgrade from Scott.  See details at:
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=156
+
+2002-05-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps: New commandline switches to override resolution
+       units obtained from the input file. Closes
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=131
+
+2002-04-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * libtiff/libtiff.def: Added missed declaration.
+       
+2002-04-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * tools/fax2tiff.c: Updated to reflect latest changes in libtiff.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=125
+
+2002-04-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * libtiff/tif_open.c: Pointers to custom procedures
+       in TIFFClientOpen() are checked to be not NULL-pointers.
+       
+2002-04-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * libtiff/libtiff.def: Added missed declarations.
+
+       * libtiff/tif_pixarlog.c: Updated for using tif_tagmethods structure.
+
+2002-04-16  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_lzw.c: Additional checks for data integrity introduced.
+       Should finally close
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=100
+       
+2002-04-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2ps: Division by zero fixed.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=88
+
+2002-04-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+       
+       * libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
+       TIFFCheckpointDirectory() routine added.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=124
+
+       * man/: TIFFWriteDirectory.3t,  Makefile.in: Added description
+       for the new function.
+
+2002-04-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/: tif_codec.c, tif_compress.c, tiffiop.h: Introduced
+       additional members tif->tif_decodestatus and tif->tif_encodestatus
+       for correct handling of unconfigured codecs (we should not try to read
+       data or to define data size without correct codecs).
+
+       * libtiff/tif_getimage.c: The way of codecs checking in TIFFRGBAImageOK
+       changed. Now it has used tif->tif_decodestatus and
+       tif->tif_encodestatus.
+       Should fix http://bugzilla.remotesensing.org/show_bug.cgi?id=119 (in
+       case of __cvs_8.tif test image).
+
+       * libtiff/: tif_dirinfo.c, tif_dirread.c: Somebody makes a bug in
+       tif_dirread.c when TIFFCreateAnonFieldInfo was introduced.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=119 in case
+       of _cvs_00000-00.tif, _cvs_00000-01.tif and _cvs_00000-02.tif.
+
+2002-04-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/: tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat
+       replaced by warnings. Now libtiff should read corrupted LZW-compressed
+       files by skipping bad strips.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=100
+       
+2002-04-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: Removed some dead code.
+
+       * libtiff/*: Cleanup some warnings.
+
+       * libtiff/tif_dir.c: Fixed bug with count returned by TIFFGetField()
+       for variable length FIELD_CUSTOM values.  Was int * but should be
+       u_short *.
+
+2002-04-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/: tifcp.c: Added support for 'Orientation' tag in tiffcp
+       utility (at cpStripToTile routine).
+
+2002-03-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=111
+
+       * tif_print.c: Fixed so that ASCII FIELD_CUSTOM values with 
+       passcount set FALSE can be printed (such as TIFFTAG_SOFTWARE).
+
+       * libtiff/tif_dir.c,tif_dirinfo.c,tif_dir.h,tif_ojpeg.c: modified so 
+       that TIFFTAG_SOFTWARE uses FIELD_CUSTOM as an example.
+
+2002-03-26  Dwight Kelly  <dbmalloc@remotesensing.org>
+
+       * libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
+       tif_dirwrite.c: Added get/put code for new tag XMLPACKET as defined
+       in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 spec 
+       INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes: 
+       CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
+       INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
+
+2002-03-26  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/: tif_getimage.c: TIFFReadRGBAStrip and TIFFReadRGBATile
+       now also uses TIFFRGBAImageOK before reading. This is additional fix
+       for http://bugzilla.remotesensing.org/show_bug.cgi?id=110
+
+2002-03-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/: tif_getimage.c: Additional check for supported
+       codecs added in TIFFRGBAImageOK and TIFFReadRGBAImage now uses
+       TIFFRGBAImageOK before reading.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=110
+
+2002-03-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
+       tif_dirwrite.c: Added routine TIFFDataWidth for detrmining
+       TIFFDataType sizes instead of working with tiffDataWidth array
+       directly. Should prevent out-of-borders bugs in case of unknown or
+       broken data types.  EstimateStripByteCounts routine modified, so it
+       won't work when tags with uknown sizes founded.
+       Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=109
+
+2002-03-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_getimage.c: Added support for correct handling
+       `Orientation' tag in gtTileContig. Should be added in other gt*
+       functions as well, but I have not images for testing yet. Partially
+       resolves http://bugzilla.remotesensing.org/show_bug.cgi?id=23
+
+2002-03-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to
+       read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION,
+       TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC.  Closes
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=99
+
+2002-03-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/Makefile.in, tools/Makefile.in: Shared library will not
+       be stripped when installing, utility binaries will do.  Closes
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=93
+
+2002-02-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * man/TIFFGetField: fixed type of TIFFTAG_COPYRIGHT.
+
+       * man/libtiff.3t: added copyright tag info.
+
+2002-02-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=94
+
+       * man/Makefile.in: Patch DESTDIR handling 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=95
+
+       * configure: OpenBSD changes for Sparc64 and DSO version.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=96
+
+2002-02-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * config.site/configure: added support for OJPEG=yes option to enable
+       OJPEG support from config.site.
+
+2002-01-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/document.html: fixed links for TIFf 6 docs.
+
+2002-01-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
+
+       * libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
+       decodestrip function returns anything not greater than zero as per
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=97
+
+       * configure: Modify CheckForBigEndian so it can work in a cross
+       compiled situation.
+
+2002-01-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffdump.c: include TIFFTAG_JPEGTABLES in tag list.
+
+       * tools/tiffset.c: fix bug in error reporting.
+
+       * tools/tiffcp.c: fix several warnings that show up with -Wall.
+
+2002-01-04  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: fixed computation of segment_width for 
+       tiles files to avoid error about it not matching the 
+       cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile 
+       size.") for ITIFF files.  Apparently the problem was incorporated since
+       3.5.5, presumably during the OJPEG/JPEG work recently.
+
+2001-12-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure, libtiff/Makefile.in: Changes for building on MacOS 10.1.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=94
+
+       * libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1 
+       (defined in tiffconf.h - 1 by default) then the RGBA interface
+       will assume that a fourth extra sample is ASSOCALPHA if the
+       EXTRASAMPLE value isn't set for it.  This changes the behaviour of
+       the library, but makes it work better with RGBA files produced by
+       lots of applications that don't mark the alpha values properly.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=93
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=65
+
+2001-12-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: allow jpeg data stream sampling values to 
+       override those from tiff directory.  This makes this work with 
+       ImageGear generated files. 
+
+2001-12-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/Makefile.in: added missing images per bug 92.
+
+       * port/Makefile.in: fixed clean target per bug 92.
+
+2001-11-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Reissue 3.5.7 release.
+
+       * libtiff/mkversion.c: Fix output of TIFF_VERSION to be
+       YYYYMMDD so that it is increasing over time. 
+
+       * Makefile.in: Ensure that tiffvers.h is regenerated in the
+       make release target.
+
+       * Makefile.in: added libtiff/tiffvers.h to the release file list.
+
+2001-11-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * added html/v3.5.7.html, updated html/index.html.
+
+       * Makefile.in: added contrib/addtiffo/tif_ovrcache.{c,h}.
+
+2001-11-15  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure: fixed test for -lm.
+
+2001-11-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Added PHOTOMETRIC_ITULAB as per bug 90.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=90
+
+2001-10-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tiff.h: I have created COMPRESSION_CCITT_T4, 
+       COMPRESSION_CCITT_T6, TIFFTAG_T4OPTIONS and TIFFTAG_T6OPTIONS aliases 
+       in keeping with TIFF 6.0 standard in tiff.h
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=83
+
+2001-09-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: added TIFFRewriteDirectory() function.
+       Updated TIFFWriteDirectory man page to include TIFFRewriteDirectory.
+
+2001-09-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c: Avoid MS VC++ 5.0 optimization bug.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=78
+
+       * libtiff/tif_lzw.c: added dummy LZWSetupEncode() to report an
+       error about LZW not being available.
+
+       * libtiff/tif_dir.c: propagate failure to initialize compression
+       back from TIFFSetField() as an error status, so applications can 
+       detect failure.
+
+       * libtiff/tif_dir.c: removed the auto replacement of 
+       COMPRESSION_LZW with COMPRESSION_NONE in _TIFFVSetField().
+
+       * Removed Makefile, tools/Makefile, port/install.sh, man/Makefile
+       from CVS as they are all supposed to be auto-generated by configure.
+
+2001-09-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_ojpeg.c: new update from Scott. 
+
+2001-09-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtif/tif_fax3.c: Removed #ifdef PURIFY logic, and modified to
+       always use the "safe" version, even if there is a very slight
+       cost in performance.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=54
+
+       * libtiff/Makefile.in: Fixed @DSOSUB_VERSION to be @DSOSUF_VERSION@
+       in two places.
+
+       * libtiff/tif_getimage.c: Fixed problem with reading strips or
+       tiles that don't start on a tile boundary.  Fix contributed by
+       Josep Vallverdu (from HP), and further described in bug 47.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=47
+
+       * tools/tiff2ps.c: added OJPEG YCbCr to RGB support. 
+
+       * libtiff/tif_ojpeg.c: Applied substantial patch from Scott.
+
+2001-09-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_packbits.c: fixed memory overrun error.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=77
+       
+2001-08-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: relax handling of contig case where
+       there are extra samples that are supposed to be ignored.  This
+       should now work for 8bit greyscale or palletted images.  
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=75    
+
+2001-08-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: Don't complain for CMYK (separated)
+       images with more than four samples per pixel.  See:
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=73
+
+2001-08-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy()
+       in TIFFReadRGBATile() to avoid issues in cases of overlapping
+       buffers.  See Bug 69 in Bugzilla. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=69
+       
+       * tools/tiff2rgba.c: fixed getopt() call so that -b works again.
+
+2001-08-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__ 
+       when checking for 64 bit architectures as per bugzilla bug 67.
+
+2001-07-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * man/Makefile.in: add TIFFClientOpen link as per debian submitted
+       bug 66.
+
+2001-07-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H 
+       has been included.
+
+2001-07-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_open.c: Seek back to zero after failed read,
+       before writing header.
+
+2001-07-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_ojpeg.c: updates from Scott.  Handles colors
+       much better.  Now depends on having patched libjpeg as per
+       patch in contrib/ojpeg/*. 
+
+2001-07-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * */Makefile.in: added DESTDIR support. 
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=60
+
+2001-07-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure, libtiff/Makefile.in: applied OpenBSD patches
+       as per:
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=61
+
+2001-06-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: Fixed so that failure is properly
+       reported by gtTileContig, gtStripContig, gtTileSeparate and 
+       gtStripSeparate.
+
+       See http://bugzilla.remotesensing.org/show_bug.cgi?id=51
+
+       * tiffcmp.c: Fixed multi samples per pixel support for ContigCompare.  
+       Updated bug section of tiffcmp.1 to note tiled file issues.
+       
+       See http://bugzilla.remotesensing.org/show_bug.cgi?id=53
+
+2001-06-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure: Changes for DSO generation on AIX provided by
+       John Marquart <jomarqua@indiana.edu>.
+
+       * configure, libtiff/Makeifle.in: Modified to build DSOs properly
+       on Darwin thanks to Robert Krajewski (rpk@alum.mit.edu) and
+       Keisuke Fujii (fujiik@jlcuxf.kek.jp).
+
+2001-06-13  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2rgba.c: added -n flag to avoid emitting alpha component.
+
+       * man/tiff2rgba.1: new
+
+2001-05-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Added tiffset and tif_ojpeg to the dist lists in Makefile.in.
+
+2001-05-13  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tools/thumbnail.c: changed default output compression
+       to packbits from LZW since LZW isn't generally available.
+
+2001-05-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_ojpeg.c: New.
+       libtiff/tif_jpeg.c, tiffconf.h, tif_getimage.c: changes related
+       to OJPEG support.
+
+       Scott Marovich <marovich@hpl.hp.com> supplied OJPEG support.
+
+2001-05-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tiff.h: removed, it duplicates libtiff/tiff.h.
+
+2001-05-08  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: moved pixar and copyright flags to 
+       ensure everything is in order.
+
+       * libtiff/libtiff.def: added TIFFCreateDirectory and 
+       TIFFDefaultStripSize as per:
+
+         http://bugzilla.remotesensing.org/show_bug.cgi?id=46
+
+2001-05-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Modified the TIFF_BYTE definition for
+       TIFFTAG_PHOTOSHOP to use a writecount of TIFF_VARIABLE2 (-3) to
+       force use of uint32 counts instead of short counts. 
+
+       * libtiff/tif_dirwrite.c: Added support for TIFF_VARIABLE2 in the
+       case of writing TIFF_BYTE/TIFF_SBYTE fields.  
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=43
+
+2001-05-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: removed duplicate TIFFTAG_PHOTOSHOP as per
+       bug report http://bugzilla.remotesensing.org/show_bug.cgi?id=44
+
+2001-04-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tiffio.h: removed C++ style comment.
+
+       * configure: fixed up SCRIPT_SH/SHELL handling.
+
+       * Makefile.in: Fixed SCRIPT_SH/SHELL handling.
+
+       * config.guess: documented more variables as per bug 40.
+
+2001-04-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure, *Makefile.in: Various changes to improve configuration
+       for HP/UX specifically, and also in general.  They include:
+        - Try to handle /usr/bin/sh instead of /bin/sh where necessary.
+        - Upgrade to HP/UX 10.x+ compiler, linker and dso options.
+        - Fixed mmap() test to avoid MMAP_FIXED ... it isn't available on HP
+        - Use -${MAKEFLAGS} in sub makes from makefiles.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=40
+
+2001-04-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tiff.h: Applied hac to try and resolve the problem
+       with the inttypes.h include file on AIX.
+
+       See http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+       
+       * VERSION: update to 3.5.7 beta in preparation for release.
+
+       * configure/config.site: modified to check if -lm is needed for
+       MACHDEPLIBS if not supplied by config.site.  Needed for Darwin.
+
+       * config.guess: updated wholesale to an FSF version apparently 
+       from 1998 (as opposed to 1994).  This is mainly inspired by 
+       providing for MacOS X support.
+
+2001-03-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure, Makefile.in, etc: added support for OPTIMIZER being
+       set from config.site. 
+
+2001-03-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * fax2ps.c: Helge (libtiff at oldach.net) submitted fix:
+
+       Here's a fix for fax2ps that corrects behaviour for non-Letter paper
+       sizes. It fixes two problems:
+
+       Without scaling (-S) the fax is now centered on the page size specified
+       with -H and/or -W. Before, fax2ps was using an obscure and practially
+       useless algorithm to allocate the image relative to Letter sized paper
+       which sometime sled to useless whitespace on the paper, while at the
+       same time cutting of the faxes printable area at the opposite border.
+
+       Second, scaling now preserves aspect ratio, which makes unusual faxes
+       (in particular short ones) print properly.
+
+       See http://bugzilla.remotesensing.org/show_bug.cgi?id=35
+       
+       * tiff2ps.c/tiff2ps.1: Substantial changes to tiff2ps by
+       Bruce A. Mallett.  See check message for detailed information
+       on all the changes, including a faster encoder, fixes for level
+       2 PostScript, and support for the imagemask operator.
+
+2001-03-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tiffio.h: Changed "#if LOGLUV_PUBLIC" to 
+       "#ifdef LOGLUV_PUBLIC" so it will work with VisualAge on AIX.
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+
+2001-03-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirinfo.c: moved definition of copyright tag in field list.
+       Apparently they have to be in sorted order by tag id.
+
+2001-03-13  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_getimage.c: Added support for 16bit minisblack/miniswhite 
+       images in RGBA interface.
+
+2001-03-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Added TIFFTAG_COPYRIGHT support.
+
+2001-02-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Brent Roman contributed updated tiffcp utility (and tiffcp.1)
+       with support for extracting subimages with the ,n syntax, and also
+       adding the -b bias removal flag. 
+
+2001-02-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def: Brent Roman submitted new version adding
+       serveral missing entry points. 
+
+       * libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS.
+       Some sort of weird VMS thing.  
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=31
+
+       * tif_luv.c/tiff.h/tiffio.h: 
+       New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward 
+       (greg@shutterfly.com).  He writes:
+
+       1) I improved the gamut-mapping function in tif_luv.c for imaginary
+       colors, because some images were being super-saturated on the input 
+       side and this resulted in some strange color shifts in the output.
+
+       2) I added a psuedotag in tiff.h to control random dithering during
+       LogLuv encoding.  This is turned off by default for 32-bit LogLuv and 
+       on for 24-bit LogLuv output.  Dithering improves the average color 
+       accuracy over the image.
+
+       3) I added a #define for LOG_LUV_PUBLIC, which is enabled by default in
+       tiffio.h, to expose internal routines for converting between LogLuv and
+       XYZ coordinates.  This is helpful for writing more efficient,
+       specialized conversion routines, especially for reading LogLuv files.
+
+       Changes applied with minor edits.
+
+2001-01-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_fax3.c: keep rw_mode flag internal to fax3 state to remember
+       whether we are encoding or decoding.  This is to ensure graceful 
+       recovery if TIFFClientOpen() discovers an attempt to open a compressed
+       file for "r+" access, and subsequently close it, as it resets the 
+       tif_mode flag to O_RDONLY in this case to avoid writes, confusing the
+       compressor's concept of whether it is in encode or decode mode.
+
+2001-01-08  Mike Welles <mike@bangstate.com> 
+
+       * Makefile.in:  Now cleaning up after itself after creating the .tar.gz and .zip
+       
+2001-01-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/libtiff.html: Fixed arguments in example for TIFFRGBAImageGet()
+       as per bug report by Patrick Connor. 
+
+2000-12-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Added RELEASE-DATE file to release file list.
+
+       * Fixed libtiff/makefile.vc to make tiffvers.h not version.h.
+
+2000-12-22  Mike Welles <mike@bangstate.com> 
+        * added link to CVS mirror from index.html
+       
+       * updated html/internals.html to note that LZW compression is 
+         not supported by default. 
+       
+2000-12-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * updated html/libtiff.html to not point at Niles' old JPL web site
+       for the man pages, point at www.libtiff.org.
+
+2000-12-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_apple.c: Applied "Carbon" support patches supplied by
+       Leonard Rosenthol <leonardr@lazerware.com>.  May interfere
+       with correct building on older systems.  If so, please let me know.
+
+2000-12-19 Mike Welles <mike@bangsate.com>   
+
+       * Took out LZW Encoding from tif_lzw.c 
+
+       * Created HOWTO-RELEASE
+
+       * Created html/v3.5.6.html
+
+       * updated index.html
+       
+2000-12-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * Added patches for EOFB support in tif_fax3.c and tif_fax3.h. 
+       Patches supplied by Frank Cringle <fdc@cliwe.ping.de>
+       Example file at: ftp://ftp.remotesensing.org/pub/libtiff/eofb_396.tif
+
+2000-11-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/Makefile.in: Added an installPrivateHdrs and install-private
+       target so that the private headers required by libgeotiff can be
+       installed with the others.  They are not installed by default.
+
+       * libtiff/Makefile.in: Added @MACHLIBDEPS@ to LINUXdso and GNULDdso
+       targets so libtiff.so will be built with an explicit dependency
+       on libm.so.
+
+       * libtiff/Makefile.in: Use softlinks to link libtiff.so.3 to 
+       libtiff.so.3.5.5.  
+
+       * libtiff/Makefile.in & configure: Remove all references to the ALPHA 
+       file, or ALPHA version logic.  Added stuff about DIST_POINT in 
+       place of DIST_TYPE and the alpha release number stuff.
+
+2000-11-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * I have applied a patch from Steffen Moeller <moeller@ebi.ac.uk> to
+       the configure script so that it now accepts the --prefix, and 
+       --exec-prefix directives. 
+
+2000-11-13  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * I have made a variety of modifications in an effort to ensure the 
+       TIFFLIB_VERSION macro is automatically generated from the RELEASE-DATE
+       file which seems to be updated regularly.  
+
+        o mkversion.c now reads RELEASE-DATE and emits TIFFLIB_VERSION in 
+          version include file. 
+        o renamed version.h to tiffvers.h because we now have to install it 
+          with the public libtiff include files.  
+        o include tiffvers.h in tiffio.h. 
+        o updated tif_version.c to use tiffvers.h.
+        o Updated Makefile.in accordingly.
+
+       * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=25
+       I have updated the win32 detection rules in tiffcomp.h.
+
+2000-10-20  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * tif_getimage.c: Fixed RGBA translation for YCbCr images for which
+       the strip/tile width and height aren't multiples of the sampling size.
+       See http://bugzilla.remotesensing.org/show_bug.cgi?id=20
+       Some patches from Rick LaMont of Dot C Software.
+
+       * Modified tif_packbits.c encoder to avoid compressing more 
+       data than provided if rowsize doesn't factor into provided data
+       (such as occurs for YCbCr).
+
+2000-10-19  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * tools/rgb2ycbcr.c: fixed output strip size to account for vertical 
+       roundup if rows_per_strip not a multiple of vertical sample size.
+
+2000-10-16  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * tif_dir.c: Clear TIFF_ISTILED flag in TIFFDefaultDirectory
+       as per http://bugzilla.remotesensing.org/show_bug.cgi?id=18
+       from vandrove@vc.cvut.cz.
+
+       * Modified tif_packbits.c decoding to avoid overrunning the
+       output buffer, and to issue a warning if data needs to be
+       discarded.  See http://bugzilla.remotesensing.org/show_bug.cgi?id=18
+
+2000-10-12  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Modified tiff2bw to ensure portions add to 100%, and that
+       white is properly recovered. 
+       
+       See bug http://bugzilla.remotesensing.org/show_bug.cgi?id=15
+       Patch c/o Stanislav Brabec <utx@penguin.cz>
+
+2000-09-30  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Modified TIFFClientOpen() to emit an error on an attempt to
+       open a comperessed file for update (O_RDWR/r+) access.  This is
+       because the compressor/decompressor code gets very confused when
+       the mode is O_RDWR, assuming this means writing only.  See
+       bug http://bugzilla.remotesensing.org/show_bug.cgi?id=13
+
+2000-09-27  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Added GNULDdso target an`d switched linux and freebsd to use it. 
+
+2000-09-26  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Applied patch for 0x0000 sequences in tif_fax3.h's definition
+       of EXPAND1D() as per bug 11 (from Roman). 
+
+2000-09-25  Frank Warmerdam  <warmerda@cs46980-c>
+       * Fixed tiffcomp.h to avoid win32 stuff if unix #defined, to improve
+       cygwin compatibility.
+
+       * Applied patch from Roman Shpount to tif_fax3.c.  This seems to
+       be a proper fix to the buffer sizing problem.  See 
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=11
+
+       * Fixed tif_getimage.c to fix overrun bug with YCbCr images without
+       downsampling.  http://bugzilla.remotesensing.org/show_bug.cgi?id=10
+       Thanks to Nick Lamb <njl98r@ecs.soton.ac.uk> for reporting the
+       bug and proving the patch.
+       
+2000-09-18  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Fixed tif_jpeg.c so avoid destroying the decompressor before
+       we are done access data thanks to bug report from:
+       Michael Eckstein <eckstein@gepro.cz>.
+
+       * Reverted tif_flush change.
+
+2000-09-14  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * tif_flush.c: Changed so that TIFFFlushData() doesn't return an
+       error when TIFF_BEENWRITING is not set.  This ensures that the
+       directory contents can still be flushed by TIFFFlush().
+
+2000-08-14  Frank Warmerdam  <warmerda@rommel.atlsci.com>
+
+       * tif_open.c: Don't set MMAP for O_RDWR files.
+
+       * tif_open.c: Set STRIPCHOP_DEFAULT for O_RDWR as well as O_RDONLY
+       so that files opened for update can be strip chopped too.
+
+       * tif_read.c: fixed up bug with files missing rowsperstrip and
+       the strips per separation fix done a few weeks ago.
+
+2000-07-17  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and
+       SAMPLEFORMAT_COMPLEXINT.
+
+2000-07-13  Mike Welles <mike@onshore.com> 
+
+       * index.html, bugs.html: added bugzilla info. 
+       
+2000-07-12  Frank Warmerdam  <warmerda@rommel.atlsci.com>
+
+       * tif_read.c: fix subtle bug with determining the number of
+       rows for strips that are the last strip in a separation but
+       not the last strip of all in TIFFReadEncodedStrip().  
+
+       * Applied 16/32 bit fix to tif_fax3.c.  Fix supplied by
+       Peter Skarpetis <peters@serendipity-software.com.au>
+
+2000-06-15  Frank Warmerdam  <warmerda@rommel.atlsci.com>
+
+       * Modified tiffio.h logic with regard to including windows.h.  It
+       won't include it when building with __CYGWIN__.
+
+2000-05-11  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * README: update to mention www.libtiff.org, don't list Sam's old
+       email address.
+
+       * configure: Fixed DSO test for Linux as per patch from
+         Jan Van Buggenhout <chipzz@Ace.ULYSSIS.Student.KULeuven.Ac.Be>.
+
+2000-04-21  Frank Warmerdam  <warmerda@rommel.atlsci.com>
+
+       * libtiff/tif_dirread.c: Don't use estimate strip byte count for
+       one tile/strip images with an offset, and byte count of zero. These
+       could be "unpopulated" images. 
+
+2000-04-18  Frank Warmerdam  <warmerda@rommel.atlsci.com>
+
+       * contrib/addtiffo: Added "averaging" resampling option.
+
+       * tools/tiffsplit.c: Copy TIFFTAG_SAMPLEFORMAT.
+
+Tue Apr 18 16:18:08 2000  Frank Warmerdam  <warmerda@esabot.atlsci.com>
+
+       * tools/Makefile.in: Modified to install properly on SGI.
+
+2000-04-12  Mike Welles             <mike@onshore.com>
+       * configure:  Fixed stupid mistake in libc6 test on Linux
+
+2000-04-04  Mike Welles             <mike@onshore.com> 
+       * tif_win32.c:  Applied patch to fix overreads and ovverwrites
+         caught by BoundsChecker.  From Arvan Pritchard 
+         <arvan.pritchard@infomatix.co.uk>  (untested). 
+       
+       * tif_getimage.c:  Applied patch to silence VC6 warnings.  From 
+         Arvan Pritchard <arvan.pritchard@informatix.co.uk>
+       
+       * tif_lzw.c:  Applied patch to silence VC6 warnings.  From 
+         Arvan Pritchard <arvan.pritchard@informatix.co.uk>
+       
+2000-03-28  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * Added contrib/stream (stream io) code submitted by Avi Bleiweiss.
+
+2000-03-28  Frank Warmerdam  <warmerda@cs46980-c>    *** 3.5.5 release ***
+
+       * fax2ps: Fixed mixup of width and height in bounding box statement
+       as per submission by Nalin Dahyabhai <nalin@redhat.com>.
+
+2000-03-27  Mike Welles             <mike@onshore.com> 
+
+       * fax2ps:  Modified printruns to take uint32 instead of uint16.  
+       Patch courtesy of Bernt Herd <herd@herdsoft.com> 
+       
+2000-03-20  Mike Welles             <mike@onshore.com> 
+
+       * configure: added test for libc6 for linux targets.  Bug reported by 
+        Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+       * Added 3.5 docs to html/Makefile.in.  
+       Thanks to  Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+       * configure: fixed bugs in sed scripts 
+       (applied sed script s:/@:s;@:;s:/s;;:;: to configure). 
+       fix submitted to Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+       * tools/iptcutil was not in files list, and wasn't being 
+       added to tar archive.  Updated Makefile.in.
+
+2000-03-17  Frank Warmerdam  <warmerda@cs46980-c>
+
+       * tif_fax3.c: Fixed serious bug introduced during the uint16->uint32
+       conversion for the run arrays.  
+
+2000-03-03  Frank Warmerdam  <warmerda@cs46980-c.mtnk1.on.wave.home.com>
+
+       * Set td_sampleformat default to SAMPLEFORMAT_UINT instead of 
+       SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c.
+
+2000-03-02  Frank Warmerdam  <warmerda@cs46980-c.mtnk1.on.wave.home.com>
+
+       * Added "GetDefaulted" support for TIFFTAG_SAMPLEFORMAT in tif_aux.c.
+
+       * Patched tif_fax3.c so that dsp->runs is allocated a bit bigger
+       to avoid overruns encountered with frle_bug.tif.
+
+Tue Feb 15 22:01:05 2000  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Fixed tools/tiffcmp so that stopondiff testing works.
+         Patch care of Joseph Orost <joe@sanskrit.lz.att.com>.
+
+2000-01-28    <warmerda@CS46980-B>
+
+       * Modified tif_unix.c to support 2-4GB seeks if USE_64BIT_API is
+         set to 1, and added default (off) setting in tiffconf.h.  This
+         should eventually be set by the configure script somehow.
+
+         The original work on all these 2-4GB changes was done by 
+         Peter Smith (psmith@creo.com).
+
+       * Modified tif_win32.c to support 2-4GB seeks.
+
+       * tentatively changed toff_t to be unsigned instead of signed to
+         facilitate support for 2-4GB files. 
+
+       * Updated a variety of files to use toff_t.  Fixed some mixups
+         between toff_t and tsize_t.
+
+Fri Jan 28 10:13:49 2000  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Largely reimplemented contrib/addtiffo to avoid temp files, 
+       updating the TIFF file in place.  Fixed a few other bugs to.
+
+       * Set tif_rawdatasize to zero when freeing raw data buffer in
+       TIFFWriteDirectory().
+
+       * Enabled "REWRITE_HACK" in tif_write.c by default.
+
+       * Fix bug in tif_write.c when switching between reading one directory
+       and writing to another. 
+
+       * Made TIFFWriteCheck() public, and added TIFFCreateDirectory()
+
+Wed Jan  5 12:37:48 2000  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added TIFFmemory(3t) functions to libtiff.def.
+
+Tue Jan  4 13:39:00 2000  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added libtiff/libtiff.def to TIFFILES distribution list.
+
+Mon Dec 27 12:13:39 EST 1999  Mike Welles <mike@onshore.com> 
+
+       * Created lzw compression kit, as a new module (libtiff-lzw-compression-kit). 
+
+       * Altered descriptions in tools to reflect "by default" lzw not supported
+
+       * Updated index.html to note lzw compression kit. 
+       
+Tue Dec 21 14:01:51 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added fax3sm_winnt.c to distribution list in Makefile.in. 
+
+Tue Dec 21 11:04:45 EST 1999  Mike Welles <mike@onshore.com> *** 3.5.4 release ***
+       
+       * Aadded Pixar tag support.  Contributed by Phil Beffery <phil@pixar.com> 
+
+       * Made one more change to tif_dir.c for removal of LZW compression. Also added notice 
+         when LZW compression invoked. 
+
+       * Changed default compression in tools to TIFF_PACKBITS, and changed usage descriptions
+         in tools to reflect removal of LZW compression
+         
+Mon Dec 20 18:39:02 EST 1999  Mike Welles  <mike@onshore.com>
+
+        * Fixed bug that caused LZW (non) compression to segfault. Added 
+         warning about LZW compression removed being removed, and why. 
+
+       * Added nostrip to install in tools/Makefile.in so that debugging 
+         symbols are kept. 
+       
+Tue Dec  7 12:04:47 EST 1999  Mike Welles  <mike@onshore.com>
+
+       * Added patch from Ivo Penzar <ivo.penzar@infolink-software.com>, 
+         supporting Adobe ZIP deflate.  Untested. 
+       
+Sat Dec  4 15:47:11 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Made Packbits the default compression in tools/tiff2rgba.c instead
+       of LZW.
+
+Tue Nov 30 14:41:43 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>    *** 3.5.3. release ***
+
+       * Added tif_luv to contrib/djgpp/Makefile.lib.
+
+Tue Nov 30 14:15:32 EST 1999   Mike Welles <mike@onshore.com> 
+
+        * Added zip creation to relase makefile target 
+
+       * Added html for TIFFWriteTile.3t man page. 
+       
+Tue Nov 30 09:20:16 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added some changes to tif_write.c to support rewriting existing
+       fixed sized tiles and strips.  Code mods disabled by default, only
+       enabled if REWRITE_HACK is defined for now.
+
+Mon Nov 29 11:43:42 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added TIFFWriteTile.3t man page.
+
+Sun Nov 28 20:36:18 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added notes on use of makefile.vc in build.html, and fixed 
+       email subscription address.
+
+199-11-28  Mike Welles <mike@onshore.com> 
+
+       *  Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c 
+
+       *  Did some casts cleaning up to reduce compiler warnings in tif_fax3.c,
+          from Bruce Carmeron <cameron@petris.com> -- modifications of 
+          changes made by Frank (sun cc still complained on cast). 
+
+       *  Added tiffconf.h to install target per request from Bill
+          Radcliffe <billr@corbis.com>: "We need a way for ImageMagick to
+          know features have been compiled into the TIFF library in order to
+          handle things properly".  
+       
+Sat Nov 27 16:49:21 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * fixed various VC++ warnings as suggested by Gilles Vollant
+       <info@winimage.com>.  
+
+Wed Nov 24 12:08:16 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Modified TIFFquery.3t man pages info on TIFFIsByteSwapped() to
+       not imply applications are responsible for image data swapping.
+
+1999-11-22  Mike Welles <mike@onshore.com>
+       *  HTML-ized the man pages, added to html/man
+       
+       *  Removed LZW Compression to comply with Unisys patent extortion. 
+       
+1999-09-29  Mike Welles                <mike@onshore.com> 
+       *  Corrected one remaining 16 -> 32 bit value in tif_fax3.c, 
+          From Ivo Penzar <ivo.penzar@infolink-software.com. 
+
+       *  Added patch from Ivo Penzar to have TiffAdvanceDirectory handle
+          memory mapped files. <ivo.penzar@infolink-software.com>
+       
+1999-09-26  Mike Welles        <mike@onshore.com>  *** 3.5.2 release ***
+       * Corrected alpha versioning.  
+
+       * Removed distinction between  alpha and release targets in Makefile.in. 
+
+       * added release.stamp target, which tags cvs tree, and updates 
+         "RELEASE-DATE"
+
+       * added releasediff target, which diffs tree with source as of 
+         date in "RELEASE-DATE"
+         
+       * Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving 
+         away from alpha/non-alpha distinctions). 
+
+       * updated html to reflect release 
+       
+1999-09-23    <warmerda@CS46980-B>
+
+       * Set O_BINARY for tif_unix.c open() ... used on cygwin for instance.
+
+       * Added CYGWIN case in configure.
+
+Fri Sep 17 00:13:51 CEST 1999  Mike Welles <mike@onshore.com> 
+
+       * Applied Francois Dagand's patch to handle fax decompression bug. 
+         (sizes >= 65536 were failing) 
+       
+Tue Sep 14 21:31:43 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested 
+         by Christopher Lawton <clawton@mathworks.com>
+
+Wed Sep  8 08:19:18 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added IRIX/gcc, and OSF/1 4.x support on behalf of 
+         Albert Chin-A-Young <china@thewrittenword.com>
+
+       * Added TIFFReassignTagToIgnore() API on behalf of 
+         Bruce Cameron <cameron@petris.com>.  Man page still pending.
+
+Wed Aug 25 11:39:07 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added test target in Makefile, test_pics.sh script and pics/*.rpt 
+       files to provide for a rudimentary testsuite.
+
+       * Added contrib/tags back from old distribution ... fixed up a bit.
+
+1999-08-16    <warmerda@CS46980-B>
+
+       * Added simple makefile.vc makefiles for building with MS VC++
+       on Windows NT/98/95 in console mode.  Stuff in contrib/win* make give 
+       better solutions for some users.
+
+Mon Aug 16 21:52:11 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * Added addtiffo (add overviews to a TIFF file) in contrib.  Didn't
+       put it in tools since part of it is in C++.
+
+1999-08-16  Michael L. Welles  <mike@kurtz.fake>
+
+       * Updated html/index.html with anon CVS instructions. 
+
+Mon Aug 16 13:18:41 1999  Frank Warmerdam  <warmerda@gdal.velocet.ca>
+
+       * pre-remove so link before softlink in LINUXdso action in 
+       libtiff/Makefile.in to avoid failure on LINUXdso builds other than
+       the first.
+
+       * Fixed problem with cvtcmap() in tif_getimage.c modifying the
+       colormaps owned by the TIFF handle itself when trying to fixup wrong
+       (eight bit) colormaps.  Corrected by maintaining a private copy of
+       the colormap. 
+
+       * Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in 
+       tif_getimage.c.
+
+       * CVS Repository placed at remotesensing.org.  ChangeLog added.
index 7d3af1b..927150a 100644 (file)
@@ -325,8 +325,8 @@ _TIFFUInt64ToFloat(uint64 ui64)
        if (i.part.high >= 0) {
                return (float)i.value;
        } else {
-               double df;
-               df = (double)i.value;
+               long double df;
+               df = (long double)i.value;
                df += 18446744073709551616.0; /* adding 2**64 */
                return (float)df;
        }
@@ -341,8 +341,8 @@ _TIFFUInt64ToDouble(uint64 ui64)
        if (i.part.high >= 0) {
                return (double)i.value;
        } else {
-               double df;
-               df = (double)i.value;
+               long double df;
+               df = (long double)i.value;
                df += 18446744073709551616.0; /* adding 2**64 */
                return (double)df;
        }
index 401a080..8bf3ea7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_dir.c,v 1.108 2012-02-01 01:51:00 fwarmerdam Exp $ */
+/* $Id: tif_dir.c,v 1.113 2012-06-14 20:32:53 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -122,6 +122,10 @@ setExtraSamples(TIFFDirectory* td, va_list ap, uint32* v)
 #undef EXTRASAMPLE_COREL_UNASSALPHA
 }
 
+/*
+ * Confirm we have "samplesperpixel" ink names separated by \0.  Returns 
+ * zero if the ink names are not as expected.
+ */
 static uint32
 checkInkNamesString(TIFF* tif, uint32 slen, const char* s)
 {
@@ -132,9 +136,9 @@ checkInkNamesString(TIFF* tif, uint32 slen, const char* s)
                const char* ep = s+slen;
                const char* cp = s;
                for (; i > 0; i--) {
-                       for (; *cp != '\0'; cp++)
-                               if (cp >= ep)
-                                       goto bad;
+                       for (; cp < ep && *cp != '\0'; cp++) {}
+                       if (cp >= ep)
+                               goto bad;
                        cp++;                           /* skip \0 */
                }
                return ((uint32)(cp-s));
@@ -157,8 +161,20 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
        int status = 1;
        uint32 v32, i, v;
        char* s;
+       const TIFFField *fip = TIFFFindField(tif, tag, TIFF_ANY);
+       uint32 standard_tag = tag;
 
-       switch (tag) {
+       /*
+        * We want to force the custom code to be used for custom
+        * fields even if the tag happens to match a well known 
+        * one - important for reinterpreted handling of standard
+        * tag values in custom directories (ie. EXIF) 
+        */
+       if (fip->field_bit == FIELD_CUSTOM) {
+               standard_tag = 0;
+       }
+
+       switch (standard_tag) {
        case TIFFTAG_SUBFILETYPE:
                td->td_subfiletype = (uint32) va_arg(ap, uint32);
                break;
@@ -423,7 +439,6 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
        default: {
                TIFFTagValue *tv;
                int tv_size, iCustom;
-               const TIFFField *fip = TIFFFindField(tif, tag, TIFF_ANY);
 
                /*
                 * This can happen if multiple images are open with different
@@ -550,102 +565,99 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
                                goto end;
                        }
 
-                       if ((fip->field_passcount
-                           || fip->field_writecount == TIFF_VARIABLE
-                           || fip->field_writecount == TIFF_VARIABLE2
-                           || fip->field_writecount == TIFF_SPP
-                           || tv->count > 1)
-                           && fip->field_tag != TIFFTAG_PAGENUMBER
-                           && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                           && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                           && fip->field_tag != TIFFTAG_DOTRANGE) {
+                       if (fip->field_tag == TIFFTAG_DOTRANGE 
+                           && strcmp(fip->field_name,"DotRange") == 0) {
+                               /* TODO: This is an evil exception and should not have been
+                                  handled this way ... likely best if we move it into
+                                  the directory structure with an explicit field in 
+                                  libtiff 4.1 and assign it a FIELD_ value */
+                               uint16 v[2];
+                               v[0] = (uint16)va_arg(ap, int);
+                               v[1] = (uint16)va_arg(ap, int);
+                               _TIFFmemcpy(tv->value, &v, 4);
+                       }
+
+                       else if (fip->field_passcount
+                                 || fip->field_writecount == TIFF_VARIABLE
+                                 || fip->field_writecount == TIFF_VARIABLE2
+                                 || fip->field_writecount == TIFF_SPP
+                                 || tv->count > 1) {
                                _TIFFmemcpy(tv->value, va_arg(ap, void *),
                                    tv->count * tv_size);
                        } else {
-                               /*
-                                * XXX: The following loop required to handle
-                                * TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS,
-                                * TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE tags.
-                                * These tags are actually arrays and should be passed as
-                                * array pointers to TIFFSetField() function, but actually
-                                * passed as a list of separate values. This behaviour
-                                * must be changed in the future!
-                                */
-                               int i;
                                char *val = (char *)tv->value;
-
-                               for (i = 0; i < tv->count; i++, val += tv_size) {
-                                       switch (fip->field_type) {
-                                               case TIFF_BYTE:
-                                               case TIFF_UNDEFINED:
-                                                       {
-                                                               uint8 v = (uint8)va_arg(ap, int);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_SBYTE:
-                                                       {
-                                                               int8 v = (int8)va_arg(ap, int);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_SHORT:
-                                                       {
-                                                               uint16 v = (uint16)va_arg(ap, int);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_SSHORT:
-                                                       {
-                                                               int16 v = (int16)va_arg(ap, int);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_LONG:
-                                               case TIFF_IFD:
-                                                       {
-                                                               uint32 v = va_arg(ap, uint32);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_SLONG:
-                                                       {
-                                                               int32 v = va_arg(ap, int32);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_LONG8:
-                                               case TIFF_IFD8:
-                                                       {
-                                                               uint64 v = va_arg(ap, uint64);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_SLONG8:
-                                                       {
-                                                               int64 v = va_arg(ap, int64);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_RATIONAL:
-                                               case TIFF_SRATIONAL:
-                                               case TIFF_FLOAT:
-                                                       {
-                                                               float v = (float)va_arg(ap, double);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               case TIFF_DOUBLE:
-                                                       {
-                                                               double v = va_arg(ap, double);
-                                                               _TIFFmemcpy(val, &v, tv_size);
-                                                       }
-                                                       break;
-                                               default:
-                                                       _TIFFmemset(val, 0, tv_size);
-                                                       status = 0;
-                                                       break;
+                               assert( tv->count == 1 );
+
+                               switch (fip->field_type) {
+                               case TIFF_BYTE:
+                               case TIFF_UNDEFINED:
+                                       {
+                                               uint8 v = (uint8)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_SBYTE:
+                                       {
+                                               int8 v = (int8)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_SHORT:
+                                       {
+                                               uint16 v = (uint16)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_SSHORT:
+                                       {
+                                               int16 v = (int16)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_LONG:
+                               case TIFF_IFD:
+                                       {
+                                               uint32 v = va_arg(ap, uint32);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_SLONG:
+                                       {
+                                               int32 v = va_arg(ap, int32);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_LONG8:
+                               case TIFF_IFD8:
+                                       {
+                                               uint64 v = va_arg(ap, uint64);
+                                               _TIFFmemcpy(val, &v, tv_size);
                                        }
+                                       break;
+                               case TIFF_SLONG8:
+                                       {
+                                               int64 v = va_arg(ap, int64);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_RATIONAL:
+                               case TIFF_SRATIONAL:
+                               case TIFF_FLOAT:
+                                       {
+                                               float v = (float)va_arg(ap, double);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_DOUBLE:
+                                       {
+                                               double v = va_arg(ap, double);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               default:
+                                       _TIFFmemset(val, 0, tv_size);
+                                       status = 0;
+                                       break;
                                }
                        }
                }
@@ -795,8 +807,20 @@ _TIFFVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
        TIFFDirectory* td = &tif->tif_dir;
        int ret_val = 1;
+       uint32 standard_tag = tag;
+       const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY);
+       
+       /*
+        * We want to force the custom code to be used for custom
+        * fields even if the tag happens to match a well known 
+        * one - important for reinterpreted handling of standard
+        * tag values in custom directories (ie. EXIF) 
+        */
+       if (fip->field_bit == FIELD_CUSTOM) {
+               standard_tag = 0;
+       }
 
-       switch (tag) {
+       switch (standard_tag) {
                case TIFFTAG_SUBFILETYPE:
                        *va_arg(ap, uint32*) = td->td_subfiletype;
                        break;
@@ -971,8 +995,6 @@ _TIFFVGetField(TIFF* tif, uint32 tag, va_list ap)
                        break;
                default:
                        {
-                               const TIFFField* fip =
-                                       TIFFFindField(tif, tag, TIFF_ANY);
                                int i;
 
                                /*
@@ -1013,84 +1035,85 @@ _TIFFVGetField(TIFF* tif, uint32 tag, va_list ap)
                                                        *va_arg(ap, uint16*) = (uint16)tv->count;
                                                *va_arg(ap, void **) = tv->value;
                                                ret_val = 1;
+                                       } else if (fip->field_tag == TIFFTAG_DOTRANGE
+                                                  && strcmp(fip->field_name,"DotRange") == 0) {
+                                               /* TODO: This is an evil exception and should not have been
+                                                  handled this way ... likely best if we move it into
+                                                  the directory structure with an explicit field in 
+                                                  libtiff 4.1 and assign it a FIELD_ value */
+                                               *va_arg(ap, uint16*) = ((uint16 *)tv->value)[0];
+                                               *va_arg(ap, uint16*) = ((uint16 *)tv->value)[1];
+                                               ret_val = 1;
                                        } else {
-                                               if ((fip->field_type == TIFF_ASCII
+                                               if (fip->field_type == TIFF_ASCII
                                                    || fip->field_readcount == TIFF_VARIABLE
                                                    || fip->field_readcount == TIFF_VARIABLE2
                                                    || fip->field_readcount == TIFF_SPP
-                                                   || tv->count > 1)
-                                                   && fip->field_tag != TIFFTAG_PAGENUMBER
-                                                   && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                                                   && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                                                   && fip->field_tag != TIFFTAG_DOTRANGE) {
+                                                   || tv->count > 1) {
                                                        *va_arg(ap, void **) = tv->value;
                                                        ret_val = 1;
                                                } else {
-                                                       int j;
                                                        char *val = (char *)tv->value;
-
-                                                       for (j = 0; j < tv->count;
-                                                           j++, val += _TIFFDataSize(tv->info->field_type)) {
-                                                               switch (fip->field_type) {
-                                                                       case TIFF_BYTE:
-                                                                       case TIFF_UNDEFINED:
-                                                                               *va_arg(ap, uint8*) =
-                                                                                   *(uint8 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_SBYTE:
-                                                                               *va_arg(ap, int8*) =
-                                                                                   *(int8 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_SHORT:
-                                                                               *va_arg(ap, uint16*) =
-                                                                                   *(uint16 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_SSHORT:
-                                                                               *va_arg(ap, int16*) =
-                                                                                   *(int16 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_LONG:
-                                                                       case TIFF_IFD:
-                                                                               *va_arg(ap, uint32*) =
-                                                                                   *(uint32 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_SLONG:
-                                                                               *va_arg(ap, int32*) =
-                                                                                   *(int32 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_LONG8:
-                                                                       case TIFF_IFD8:
-                                                                               *va_arg(ap, uint64*) =
-                                                                                   *(uint64 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_SLONG8:
-                                                                               *va_arg(ap, int64*) =
-                                                                                   *(int64 *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_RATIONAL:
-                                                                       case TIFF_SRATIONAL:
-                                                                       case TIFF_FLOAT:
-                                                                               *va_arg(ap, float*) =
-                                                                                   *(float *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       case TIFF_DOUBLE:
-                                                                               *va_arg(ap, double*) =
-                                                                                   *(double *)val;
-                                                                               ret_val = 1;
-                                                                               break;
-                                                                       default:
-                                                                               ret_val = 0;
-                                                                               break;
-                                                               }
+                                                       assert( tv->count == 1 );
+                                                       switch (fip->field_type) {
+                                                       case TIFF_BYTE:
+                                                       case TIFF_UNDEFINED:
+                                                               *va_arg(ap, uint8*) =
+                                                                       *(uint8 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SBYTE:
+                                                               *va_arg(ap, int8*) =
+                                                                       *(int8 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SHORT:
+                                                               *va_arg(ap, uint16*) =
+                                                                       *(uint16 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SSHORT:
+                                                               *va_arg(ap, int16*) =
+                                                                       *(int16 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_LONG:
+                                                       case TIFF_IFD:
+                                                               *va_arg(ap, uint32*) =
+                                                                       *(uint32 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SLONG:
+                                                               *va_arg(ap, int32*) =
+                                                                       *(int32 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_LONG8:
+                                                       case TIFF_IFD8:
+                                                               *va_arg(ap, uint64*) =
+                                                                       *(uint64 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SLONG8:
+                                                               *va_arg(ap, int64*) =
+                                                                       *(int64 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_RATIONAL:
+                                                       case TIFF_SRATIONAL:
+                                                       case TIFF_FLOAT:
+                                                               *va_arg(ap, float*) =
+                                                                       *(float *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_DOUBLE:
+                                                               *va_arg(ap, double*) =
+                                                                       *(double *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       default:
+                                                               ret_val = 0;
+                                                               break;
                                                        }
                                                }
                                        }
@@ -1214,6 +1237,35 @@ TIFFCreateDirectory(TIFF* tif)
        return 0;
 }
 
+int
+TIFFCreateCustomDirectory(TIFF* tif, const TIFFFieldArray* infoarray)
+{
+       TIFFDefaultDirectory(tif);
+
+       /*
+        * Reset the field definitions to match the application provided list. 
+        * Hopefully TIFFDefaultDirectory() won't have done anything irreversable
+        * based on it's assumption this is an image directory.
+        */
+       _TIFFSetupFields(tif, infoarray);
+
+       tif->tif_diroff = 0;
+       tif->tif_nextdiroff = 0;
+       tif->tif_curoff = 0;
+       tif->tif_row = (uint32) -1;
+       tif->tif_curstrip = (uint32) -1;
+
+       return 0;
+}
+
+int
+TIFFCreateEXIFDirectory(TIFF* tif)
+{
+       const TIFFFieldArray* exifFieldArray;
+       exifFieldArray = _TIFFGetExifFields();
+       return TIFFCreateCustomDirectory(tif, exifFieldArray);
+}
+
 /*
  * Setup a default directory structure.
  */
index 57a4ce5..7a5c53d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_fax3.c,v 1.72 2010-06-09 17:17:13 bfriesen Exp $ */
+/* $Id: tif_fax3.c,v 1.73 2012-06-13 00:27:20 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1990-1997 Sam Leffler
@@ -526,6 +526,7 @@ Fax3SetupState(TIFF* tif)
                                               "for Group 3/4 run arrays");
        if (dsp->runs == NULL)
                return (0);
+       memset( dsp->runs, 0, TIFFSafeMultiply(uint32,nruns,2));
        dsp->curruns = dsp->runs;
        if (needsRefLine)
                dsp->refruns = dsp->runs + nruns;
index 6a09b4d..a85273c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_getimage.c,v 1.78 2011-02-23 21:46:09 fwarmerdam Exp $ */
+/* $Id: tif_getimage.c,v 1.82 2012-06-06 00:17:49 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1991-1997 Sam Leffler
@@ -692,6 +692,7 @@ gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
        unsigned char* p2;
        unsigned char* pa;
        tmsize_t tilesize;
+       tmsize_t bufsize;
        int32 fromskew, toskew;
        int alpha = img->alpha;
        uint32 nrow;
@@ -699,12 +700,17 @@ gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
         int colorchannels;
 
        tilesize = TIFFTileSize(tif);  
-       buf = (unsigned char*) _TIFFmalloc((alpha?4:3)*tilesize);
+       bufsize = TIFFSafeMultiply(tmsize_t,alpha?4:3,tilesize);
+       if (bufsize == 0) {
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in %s", "gtTileSeparate");
+               return (0);
+       }
+       buf = (unsigned char*) _TIFFmalloc(bufsize);
        if (buf == 0) {
                TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", "No space for tile buffer");
                return (0);
        }
-       _TIFFmemset(buf, 0, (alpha?4:3)*tilesize);
+       _TIFFmemset(buf, 0, bufsize);
        p0 = buf;
        p1 = p0 + tilesize;
        p2 = p1 + tilesize;
@@ -917,17 +923,23 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
        uint32 rowsperstrip, offset_row;
        uint32 imagewidth = img->width;
        tmsize_t stripsize;
+       tmsize_t bufsize;
        int32 fromskew, toskew;
        int alpha = img->alpha;
        int ret = 1, flip, colorchannels;
 
        stripsize = TIFFStripSize(tif);  
-       p0 = buf = (unsigned char *)_TIFFmalloc((alpha?4:3)*stripsize);
+       bufsize = TIFFSafeMultiply(tmsize_t,alpha?4:3,stripsize);
+       if (bufsize == 0) {
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in %s", "gtStripSeparate");
+               return (0);
+       }
+       p0 = buf = (unsigned char *)_TIFFmalloc(bufsize);
        if (buf == 0) {
                TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
                return (0);
        }
-       _TIFFmemset(buf, 0, (alpha?4:3)*stripsize);
+       _TIFFmemset(buf, 0, bufsize);
        p1 = p0 + stripsize;
        p2 = p1 + stripsize;
        pa = (alpha?(p2+stripsize):NULL);
@@ -1197,6 +1209,26 @@ DECLAREContigPutFunc(putgreytile)
 }
 
 /*
+ * 8-bit greyscale with associated alpha => colormap/RGBA
+ */
+DECLAREContigPutFunc(putagreytile)
+{
+    int samplesperpixel = img->samplesperpixel;
+    uint32** BWmap = img->BWmap;
+
+    (void) y;
+    while (h-- > 0) {
+       for (x = w; x-- > 0;)
+        {
+            *cp++ = BWmap[*pp][0] & (*(pp+1) << 24 | ~A1);
+            pp += samplesperpixel;
+        }
+       cp += toskew;
+       pp += fromskew;
+    }
+}
+
+/*
  * 16-bit greyscale => colormap/RGB
  */
 DECLAREContigPutFunc(put16bitbwtile)
@@ -1495,6 +1527,26 @@ DECLARESepPutFunc(putRGBAAseparate8bittile)
 }
 
 /*
+ * 8-bit unpacked CMYK samples => RGBA
+ */
+DECLARESepPutFunc(putCMYKseparate8bittile)
+{
+       (void) img; (void) y;
+       while (h-- > 0) {
+               uint32 rv, gv, bv, kv;
+               for (x = w; x-- > 0;) {
+                       kv = 255 - *a++;
+                       rv = (kv*(255-*r++))/255;
+                       gv = (kv*(255-*g++))/255;
+                       bv = (kv*(255-*b++))/255;
+                       *cp++ = PACK4(rv,gv,bv,255);
+               }
+               SKEW4(r, g, b, a, fromskew);
+               cp += toskew;
+       }
+}
+
+/*
  * 8-bit unpacked samples => RGBA w/ unassociated alpha
  */
 DECLARESepPutFunc(putRGBUAseparate8bittile)
@@ -2461,7 +2513,10 @@ PickContigCase(TIFFRGBAImage* img)
                                                img->put.contig = put16bitbwtile;
                                                break;
                                        case 8:
-                                               img->put.contig = putgreytile;
+                                               if (img->alpha && img->samplesperpixel == 2)
+                                                       img->put.contig = putagreytile;
+                                               else
+                                                       img->put.contig = putgreytile;
                                                break;
                                        case 4:
                                                img->put.contig = put4bitbwtile;
@@ -2540,58 +2595,65 @@ PickSeparateCase(TIFFRGBAImage* img)
        img->get = TIFFIsTiled(img->tif) ? gtTileSeparate : gtStripSeparate;
        img->put.separate = NULL;
        switch (img->photometric) {
-               case PHOTOMETRIC_MINISWHITE:
-               case PHOTOMETRIC_MINISBLACK:
-                  /* greyscale images processed pretty much as RGB by gtTileSeparate */
-               case PHOTOMETRIC_RGB:
-                       switch (img->bitspersample) {
-                               case 8:
-                                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-                                               img->put.separate = putRGBAAseparate8bittile;
-                                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-                                       {
-                                               if (BuildMapUaToAa(img))
-                                                       img->put.separate = putRGBUAseparate8bittile;
-                                       }
-                                       else
-                                               img->put.separate = putRGBseparate8bittile;
-                                       break;
-                               case 16:
-                                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-                                       {
-                                               if (BuildMapBitdepth16To8(img))
-                                                       img->put.separate = putRGBAAseparate16bittile;
-                                       }
-                                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-                                       {
-                                               if (BuildMapBitdepth16To8(img) &&
-                                                   BuildMapUaToAa(img))
-                                                       img->put.separate = putRGBUAseparate16bittile;
-                                       }
-                                       else
-                                       {
-                                               if (BuildMapBitdepth16To8(img))
-                                                       img->put.separate = putRGBseparate16bittile;
-                                       }
-                                       break;
+       case PHOTOMETRIC_MINISWHITE:
+       case PHOTOMETRIC_MINISBLACK:
+               /* greyscale images processed pretty much as RGB by gtTileSeparate */
+       case PHOTOMETRIC_RGB:
+               switch (img->bitspersample) {
+               case 8:
+                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
+                               img->put.separate = putRGBAAseparate8bittile;
+                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
+                       {
+                               if (BuildMapUaToAa(img))
+                                       img->put.separate = putRGBUAseparate8bittile;
                        }
+                       else
+                               img->put.separate = putRGBseparate8bittile;
                        break;
-               case PHOTOMETRIC_YCBCR:
-                       if ((img->bitspersample==8) && (img->samplesperpixel==3))
+               case 16:
+                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
                        {
-                               if (initYCbCrConversion(img)!=0)
-                               {
-                                       uint16 hs, vs;
-                                       TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs);
-                                       switch ((hs<<4)|vs) {
-                                               case 0x11:
-                                                       img->put.separate = putseparate8bitYCbCr11tile;
-                                                       break;
-                                               /* TODO: add other cases here */
-                                       }
-                               }
+                               if (BuildMapBitdepth16To8(img))
+                                       img->put.separate = putRGBAAseparate16bittile;
+                       }
+                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
+                       {
+                               if (BuildMapBitdepth16To8(img) &&
+                                   BuildMapUaToAa(img))
+                                       img->put.separate = putRGBUAseparate16bittile;
+                       }
+                       else
+                       {
+                               if (BuildMapBitdepth16To8(img))
+                                       img->put.separate = putRGBseparate16bittile;
                        }
                        break;
+               }
+               break;
+       case PHOTOMETRIC_SEPARATED:
+               if (img->bitspersample == 8 && img->samplesperpixel == 4)
+               {
+                       img->alpha = 1; // Not alpha, but seems like the only way to get 4th band
+                       img->put.separate = putCMYKseparate8bittile;
+               }
+               break;
+       case PHOTOMETRIC_YCBCR:
+               if ((img->bitspersample==8) && (img->samplesperpixel==3))
+               {
+                       if (initYCbCrConversion(img)!=0)
+                       {
+                               uint16 hs, vs;
+                               TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs);
+                               switch ((hs<<4)|vs) {
+                               case 0x11:
+                                       img->put.separate = putseparate8bitYCbCr11tile;
+                                       break;
+                                       /* TODO: add other cases here */
+                               }
+                       }
+               }
+               break;
        }
        return ((img->get!=NULL) && (img->put.separate!=NULL));
 }
index f0e0aab..3c8d3bf 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_jpeg.c,v 1.105 2012-02-01 01:51:00 fwarmerdam Exp $ */
+/* $Id: tif_jpeg.c,v 1.108 2012-06-05 03:24:30 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1994-1997 Sam Leffler
@@ -1095,50 +1095,13 @@ JPEGPreDecode(TIFF* tif, uint16 s)
                /* Component 0 should have expected sampling factors */
                if (sp->cinfo.d.comp_info[0].h_samp_factor != sp->h_sampling ||
                    sp->cinfo.d.comp_info[0].v_samp_factor != sp->v_sampling) {
-                               TIFFWarningExt(tif->tif_clientdata, module,
-                                   "Improper JPEG sampling factors %d,%d\n"
-                                   "Apparently should be %d,%d.",
-                                   sp->cinfo.d.comp_info[0].h_samp_factor,
-                                   sp->cinfo.d.comp_info[0].v_samp_factor,
-                                   sp->h_sampling, sp->v_sampling);
-
-                               /*
-                                * There are potential security issues here
-                                * for decoders that have already allocated
-                                * buffers based on the expected sampling
-                                * factors. Lets check the sampling factors
-                                * dont exceed what we were expecting.
-                                */
-                               if (sp->cinfo.d.comp_info[0].h_samp_factor
-                                       > sp->h_sampling
-                                   || sp->cinfo.d.comp_info[0].v_samp_factor
-                                       > sp->v_sampling) {
-                                       TIFFErrorExt(tif->tif_clientdata,
-                                                    module,
-                                       "Cannot honour JPEG sampling factors"
-                                       " that exceed those specified.");
-                                       return (0);
-                               }
-
-                           /*
-                            * XXX: Files written by the Intergraph software
-                            * has different sampling factors stored in the
-                            * TIFF tags and in the JPEG structures. We will
-                            * try to deduce Intergraph files by the presense
-                            * of the tag 33918.
-                            */
-                           if (!TIFFFindField(tif, 33918, TIFF_ANY)) {
-                                       TIFFWarningExt(tif->tif_clientdata, module,
-                                       "Decompressor will try reading with "
-                                       "sampling %d,%d.",
-                                       sp->cinfo.d.comp_info[0].h_samp_factor,
-                                       sp->cinfo.d.comp_info[0].v_samp_factor);
-
-                                   sp->h_sampling = (uint16)
-                                       sp->cinfo.d.comp_info[0].h_samp_factor;
-                                   sp->v_sampling = (uint16)
-                                       sp->cinfo.d.comp_info[0].v_samp_factor;
-                           }
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                      "Improper JPEG sampling factors %d,%d\n"
+                                      "Apparently should be %d,%d.",
+                                      sp->cinfo.d.comp_info[0].h_samp_factor,
+                                      sp->cinfo.d.comp_info[0].v_samp_factor,
+                                      sp->h_sampling, sp->v_sampling);
+                       return (0);
                }
                /* Rest should have sampling factors 1,1 */
                for (ci = 1; ci < sp->cinfo.d.num_components; ci++) {
@@ -1160,11 +1123,11 @@ JPEGPreDecode(TIFF* tif, uint16 s)
        if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
            sp->photometric == PHOTOMETRIC_YCBCR &&
            sp->jpegcolormode == JPEGCOLORMODE_RGB) {
-       /* Convert YCbCr to RGB */
+               /* Convert YCbCr to RGB */
                sp->cinfo.d.jpeg_color_space = JCS_YCbCr;
                sp->cinfo.d.out_color_space = JCS_RGB;
        } else {
-                       /* Suppress colorspace handling */
+               /* Suppress colorspace handling */
                sp->cinfo.d.jpeg_color_space = JCS_UNKNOWN;
                sp->cinfo.d.out_color_space = JCS_UNKNOWN;
                if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
@@ -1349,8 +1312,8 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 
 #if defined(JPEG_LIB_MK1_OR_12BIT)
                unsigned short* tmpbuf = _TIFFmalloc(sizeof(unsigned short) *
-                   sp->cinfo.d.output_width *
-                   sp->cinfo.d.num_components);
+                                                    sp->cinfo.d.output_width *
+                                                    sp->cinfo.d.num_components);
                if(tmpbuf==NULL) {
                         TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
                                     "Out of memory");
@@ -1362,10 +1325,10 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
                        jpeg_component_info *compptr;
                        int ci, clumpoffset;
 
-                        if( cc < sp->bytesperline * sp->v_sampling ) {
-                            TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
-                                         "application buffer not large enough for all data.");
-                            return 0;
+                        if( cc < sp->bytesperline ) {
+                               TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
+                                            "application buffer not large enough for all data.");
+                               return 0;
                         }
 
                        /* Reload downsampled-data buffer if needed */
@@ -1381,20 +1344,25 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
                         */
                        clumpoffset = 0;    /* first sample in clump */
                        for (ci = 0, compptr = sp->cinfo.d.comp_info;
-                           ci < sp->cinfo.d.num_components;
-                           ci++, compptr++) {
+                            ci < sp->cinfo.d.num_components;
+                            ci++, compptr++) {
                                int hsamp = compptr->h_samp_factor;
                                int vsamp = compptr->v_samp_factor;
                                int ypos;
 
                                for (ypos = 0; ypos < vsamp; ypos++) {
                                        JSAMPLE *inptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
+                                       JDIMENSION nclump;
 #if defined(JPEG_LIB_MK1_OR_12BIT)
                                        JSAMPLE *outptr = (JSAMPLE*)tmpbuf + clumpoffset;
 #else
                                        JSAMPLE *outptr = (JSAMPLE*)buf + clumpoffset;
+                                       if (cc < clumpoffset + samples_per_clump*(clumps_per_line-1) + hsamp) {
+                                               TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
+                                                            "application buffer not large enough for all data, possible subsampling issue");
+                                               return 0;
+                                       }
 #endif
-                                       JDIMENSION nclump;
 
                                        if (hsamp == 1) {
                                                /* fast path for at least Cb and Cr */
@@ -1405,7 +1373,7 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
                                        } else {
                                                int xpos;
 
-                       /* general case */
+                                               /* general case */
                                                for (nclump = clumps_per_line; nclump-- > 0; ) {
                                                        for (xpos = 0; xpos < hsamp; xpos++)
                                                                outptr[xpos] = *inptr++;
@@ -1428,9 +1396,9 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
                                        }
                                }
                                else
-                                       {         /* 12-bit */
+                               {         /* 12-bit */
                                        int value_pairs = (sp->cinfo.d.output_width
-                                           * sp->cinfo.d.num_components) / 2;
+                                                          * sp->cinfo.d.num_components) / 2;
                                        int iPair;
                                        for( iPair = 0; iPair < value_pairs; iPair++ )
                                        {
@@ -1438,7 +1406,7 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
                                                JSAMPLE *in_ptr = (JSAMPLE *) (tmpbuf + iPair * 2);
                                                out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
                                                out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
-                                                   | ((in_ptr[1] & 0xf00) >> 8);
+                                                       | ((in_ptr[1] & 0xf00) >> 8);
                                                out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
                                        }
                                }
@@ -1447,12 +1415,9 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 
                        sp->scancount ++;
                        tif->tif_row += sp->v_sampling;
-/*
-                       buf += clumps_per_line*samples_per_clump;
-                       cc -= clumps_per_line*samples_per_clump;
-*/
-                       buf += sp->bytesperline * sp->v_sampling;
-                       cc -= sp->bytesperline * sp->v_sampling;
+
+                       buf += sp->bytesperline;
+                       cc -= sp->bytesperline;
 
                        nrows -= sp->v_sampling;
                } while (nrows > 0);
@@ -1465,7 +1430,7 @@ JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 
        /* Close down the decompressor if done. */
        return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
-           || TIFFjpeg_finish_decompress(sp);
+               || TIFFjpeg_finish_decompress(sp);
 }
 
 
index 0c9301d..6ea3c38 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_ojpeg.c,v 1.54 2011-05-31 17:05:07 bfriesen Exp $ */
+/* $Id: tif_ojpeg.c,v 1.56 2012-05-24 03:15:18 fwarmerdam Exp $ */
 
 /* WARNING: The type of JPEG encapsulation defined by the TIFF Version 6.0
    specification is now totally obsolete and deprecated for new applications and
@@ -1146,7 +1146,9 @@ OJPEGWriteHeaderInfo(TIFF* tif)
        OJPEGState* sp=(OJPEGState*)tif->tif_data;
        uint8** m;
        uint32 n;
-       assert(sp->libjpeg_session_active==0);
+       /* if a previous attempt failed, don't try again */
+       if (sp->libjpeg_session_active != 0) 
+               return 0;
        sp->out_state=ososSoi;
        sp->restart_index=0;
        jpeg_std_error(&(sp->libjpeg_jpeg_error_mgr));
@@ -1954,6 +1956,11 @@ OJPEGReadBufferFill(OJPEGState* sp)
                        case osibsJpegInterchangeFormat:
                                sp->in_buffer_source=osibsStrile;
                        case osibsStrile:
+                               if (!_TIFFFillStriles( sp->tif ) 
+                                   || sp->tif->tif_dir.td_stripoffset == NULL
+                                   || sp->tif->tif_dir.td_stripbytecount == NULL)
+                                       return 0;
+
                                if (sp->in_buffer_next_strile==sp->in_buffer_strile_count)
                                        sp->in_buffer_source=osibsEof;
                                else
index d8123e8..c1b6ff2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_pixarlog.c,v 1.35 2011-01-06 16:00:23 fwarmerdam Exp $ */
+/* $Id: tif_pixarlog.c,v 1.37 2012-05-24 23:21:45 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1996-1997 Sam Leffler
@@ -120,9 +120,9 @@ horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           t0 = ToLinearF[cr = wp[0]];
-           t1 = ToLinearF[cg = wp[1]];
-           t2 = ToLinearF[cb = wp[2]];
+           t0 = ToLinearF[cr = (wp[0] & mask)];
+           t1 = ToLinearF[cg = (wp[1] & mask)];
+           t2 = ToLinearF[cb = (wp[2] & mask)];
            op[0] = t0;
            op[1] = t1;
            op[2] = t2;
@@ -139,10 +139,10 @@ horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
                op[2] = t2;
            }
        } else if (stride == 4) {
-           t0 = ToLinearF[cr = wp[0]];
-           t1 = ToLinearF[cg = wp[1]];
-           t2 = ToLinearF[cb = wp[2]];
-           t3 = ToLinearF[ca = wp[3]];
+           t0 = ToLinearF[cr = (wp[0] & mask)];
+           t1 = ToLinearF[cg = (wp[1] & mask)];
+           t2 = ToLinearF[cb = (wp[2] & mask)];
+           t3 = ToLinearF[ca = (wp[3] & mask)];
            op[0] = t0;
            op[1] = t1;
            op[2] = t2;
@@ -186,9 +186,9 @@ horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           t0 = ToLinearF[cr = wp[0]] * SCALE12;
-           t1 = ToLinearF[cg = wp[1]] * SCALE12;
-           t2 = ToLinearF[cb = wp[2]] * SCALE12;
+           t0 = ToLinearF[cr = (wp[0] & mask)] * SCALE12;
+           t1 = ToLinearF[cg = (wp[1] & mask)] * SCALE12;
+           t2 = ToLinearF[cb = (wp[2] & mask)] * SCALE12;
            op[0] = CLAMP12(t0);
            op[1] = CLAMP12(t1);
            op[2] = CLAMP12(t2);
@@ -205,10 +205,10 @@ horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
                op[2] = CLAMP12(t2);
            }
        } else if (stride == 4) {
-           t0 = ToLinearF[cr = wp[0]] * SCALE12;
-           t1 = ToLinearF[cg = wp[1]] * SCALE12;
-           t2 = ToLinearF[cb = wp[2]] * SCALE12;
-           t3 = ToLinearF[ca = wp[3]] * SCALE12;
+           t0 = ToLinearF[cr = (wp[0] & mask)] * SCALE12;
+           t1 = ToLinearF[cg = (wp[1] & mask)] * SCALE12;
+           t2 = ToLinearF[cb = (wp[2] & mask)] * SCALE12;
+           t3 = ToLinearF[ca = (wp[3] & mask)] * SCALE12;
            op[0] = CLAMP12(t0);
            op[1] = CLAMP12(t1);
            op[2] = CLAMP12(t2);
@@ -250,9 +250,9 @@ horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           op[0] = ToLinear16[cr = wp[0]];
-           op[1] = ToLinear16[cg = wp[1]];
-           op[2] = ToLinear16[cb = wp[2]];
+           op[0] = ToLinear16[cr = (wp[0] & mask)];
+           op[1] = ToLinear16[cg = (wp[1] & mask)];
+           op[2] = ToLinear16[cb = (wp[2] & mask)];
            n -= 3;
            while (n > 0) {
                wp += 3;
@@ -263,10 +263,10 @@ horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
                op[2] = ToLinear16[(cb += wp[2]) & mask];
            }
        } else if (stride == 4) {
-           op[0] = ToLinear16[cr = wp[0]];
-           op[1] = ToLinear16[cg = wp[1]];
-           op[2] = ToLinear16[cb = wp[2]];
-           op[3] = ToLinear16[ca = wp[3]];
+           op[0] = ToLinear16[cr = (wp[0] & mask)];
+           op[1] = ToLinear16[cg = (wp[1] & mask)];
+           op[2] = ToLinear16[cb = (wp[2] & mask)];
+           op[3] = ToLinear16[ca = (wp[3] & mask)];
            n -= 4;
            while (n > 0) {
                wp += 4;
@@ -345,9 +345,9 @@ horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           op[0] = ToLinear8[cr = wp[0]];
-           op[1] = ToLinear8[cg = wp[1]];
-           op[2] = ToLinear8[cb = wp[2]];
+           op[0] = ToLinear8[cr = (wp[0] & mask)];
+           op[1] = ToLinear8[cg = (wp[1] & mask)];
+           op[2] = ToLinear8[cb = (wp[2] & mask)];
            n -= 3;
            while (n > 0) {
                n -= 3;
@@ -358,10 +358,10 @@ horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
                op[2] = ToLinear8[(cb += wp[2]) & mask];
            }
        } else if (stride == 4) {
-           op[0] = ToLinear8[cr = wp[0]];
-           op[1] = ToLinear8[cg = wp[1]];
-           op[2] = ToLinear8[cb = wp[2]];
-           op[3] = ToLinear8[ca = wp[3]];
+           op[0] = ToLinear8[cr = (wp[0] & mask)];
+           op[1] = ToLinear8[cg = (wp[1] & mask)];
+           op[2] = ToLinear8[cb = (wp[2] & mask)];
+           op[3] = ToLinear8[ca = (wp[3] & mask)];
            n -= 4;
            while (n > 0) {
                n -= 4;
@@ -396,9 +396,9 @@ horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
        mask = CODE_MASK;
        if (stride == 3) {
            op[0] = 0;
-           t1 = ToLinear8[cb = wp[2]];
-           t2 = ToLinear8[cg = wp[1]];
-           t3 = ToLinear8[cr = wp[0]];
+           t1 = ToLinear8[cb = (wp[2] & mask)];
+           t2 = ToLinear8[cg = (wp[1] & mask)];
+           t3 = ToLinear8[cr = (wp[0] & mask)];
            op[1] = t1;
            op[2] = t2;
            op[3] = t3;
@@ -416,10 +416,10 @@ horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
                op[3] = t3;
            }
        } else if (stride == 4) {
-           t0 = ToLinear8[ca = wp[3]];
-           t1 = ToLinear8[cb = wp[2]];
-           t2 = ToLinear8[cg = wp[1]];
-           t3 = ToLinear8[cr = wp[0]];
+           t0 = ToLinear8[ca = (wp[3] & mask)];
+           t1 = ToLinear8[cb = (wp[2] & mask)];
+           t2 = ToLinear8[cg = (wp[1] & mask)];
+           t3 = ToLinear8[cr = (wp[0] & mask)];
            op[0] = t0;
            op[1] = t1;
            op[2] = t2;
@@ -673,7 +673,7 @@ PixarLogSetupDecode(TIFF* tif)
                                      td->td_rowsperstrip), sizeof(uint16));
        if (tbuf_size == 0)
                return (0);   /* TODO: this is an error return without error report through TIFFErrorExt */
-       sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
+       sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size+sizeof(uint16));
        if (sp->tbuf == NULL)
                return (0);
        if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)
index 9481eb6..5ae2df0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_print.c,v 1.54 2011-04-02 20:54:09 bfriesen Exp $ */
+/* $Id: tif_print.c,v 1.59 2012-06-13 01:08:51 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -34,6 +34,9 @@
 
 #include <ctype.h>
 
+static void
+_TIFFprintAsciiBounded(FILE* fd, const char* cp, int max_chars);
+
 static const char *photoNames[] = {
     "min-is-white",                            /* PHOTOMETRIC_MINISWHITE */
     "min-is-black",                            /* PHOTOMETRIC_MINISBLACK */
@@ -135,34 +138,51 @@ _TIFFPrintField(FILE* fd, const TIFFField *fip,
 }
 
 static int
-_TIFFPrettyPrintField(TIFF* tif, FILE* fd, uint32 tag,
+_TIFFPrettyPrintField(TIFF* tif, const TIFFField *fip, FILE* fd, uint32 tag,
                      uint32 value_count, void *raw_data)
 {
         (void) tif;
+
+       /* do not try to pretty print auto-defined fields */
+       if (strncmp(fip->field_name,"Tag ", 4) == 0) {
+               return 0;
+       }
         
        switch (tag)
        {
                case TIFFTAG_INKSET:
-                       fprintf(fd, "  Ink Set: ");
-                       switch (*((uint16*)raw_data)) {
+                       if (value_count == 2 && fip->field_type == TIFF_SHORT) {
+                               fprintf(fd, "  Ink Set: ");
+                               switch (*((uint16*)raw_data)) {
                                case INKSET_CMYK:
                                        fprintf(fd, "CMYK\n");
                                        break;
                                default:
                                        fprintf(fd, "%u (0x%x)\n",
-                                           *((uint16*)raw_data),
-                                           *((uint16*)raw_data));
+                                               *((uint16*)raw_data),
+                                               *((uint16*)raw_data));
                                        break;
+                               }
+                               return 1;
                        }
-                       return 1;
+                       return 0;
+
                case TIFFTAG_DOTRANGE:
-                       fprintf(fd, "  Dot Range: %u-%u\n",
-                           ((uint16*)raw_data)[0], ((uint16*)raw_data)[1]);
-                       return 1;
+                       if (value_count == 2 && fip->field_type == TIFF_SHORT) {
+                               fprintf(fd, "  Dot Range: %u-%u\n",
+                                       ((uint16*)raw_data)[0], ((uint16*)raw_data)[1]);
+                               return 1;
+                       }
+                       return 0;
+
                case TIFFTAG_WHITEPOINT:
-                       fprintf(fd, "  White Point: %g-%g\n",
-                           ((float *)raw_data)[0], ((float *)raw_data)[1]);
-                       return 1;
+                       if (value_count == 2 && fip->field_type == TIFF_RATIONAL) {
+                               fprintf(fd, "  White Point: %g-%g\n",
+                                       ((float *)raw_data)[0], ((float *)raw_data)[1]);
+                               return 1;
+                       } 
+                       return 0;
+
                case TIFFTAG_XMLPACKET:
                {
                        uint32 i;
@@ -182,19 +202,25 @@ _TIFFPrettyPrintField(TIFF* tif, FILE* fd, uint32 tag,
                            "  RichTIFFIPTC Data: <present>, %lu bytes\n",
                            (unsigned long) value_count * 4);
                        return 1;
+
                case TIFFTAG_PHOTOSHOP:
                        fprintf(fd, "  Photoshop Data: <present>, %lu bytes\n",
                            (unsigned long) value_count);
                        return 1;
+
                case TIFFTAG_ICCPROFILE:
                        fprintf(fd, "  ICC Profile: <present>, %lu bytes\n",
                            (unsigned long) value_count);
                        return 1;
+
                case TIFFTAG_STONITS:
-                       fprintf(fd,
-                           "  Sample to Nits conversion factor: %.4e\n",
-                           *((double*)raw_data));
-                       return 1;
+                       if (value_count == 1 && fip->field_type == TIFF_DOUBLE) { 
+                               fprintf(fd,
+                                       "  Sample to Nits conversion factor: %.4e\n",
+                                       *((double*)raw_data));
+                               return 1;
+                       }
+                       return 0;
        }
 
        return 0;
@@ -364,9 +390,13 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                fprintf(fd, "  Ink Names: ");
                i = td->td_samplesperpixel;
                sep = "";
-               for (cp = td->td_inknames; i > 0; cp = strchr(cp,'\0')+1, i--) {
+               for (cp = td->td_inknames; 
+                    i > 0 && cp < td->td_inknames + td->td_inknameslen; 
+                    cp = strchr(cp,'\0')+1, i--) {
+                       int max_chars = 
+                               td->td_inknameslen - (cp - td->td_inknames);
                        fputs(sep, fd);
-                       _TIFFprintAscii(fd, cp);
+                       _TIFFprintAsciiBounded(fd, cp, max_chars);
                        sep = ", ";
                }
                 fputs("\n", fd);
@@ -449,14 +479,16 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
        if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE))
                fprintf(fd, "  Max Sample Value: %u\n", td->td_maxsamplevalue);
        if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE)) {
+               int count = (tif->tif_flags & TIFF_PERSAMPLE) ? td->td_samplesperpixel : 1;
                fprintf(fd, "  SMin Sample Value:");
-               for (i = 0; i < td->td_samplesperpixel; ++i)
+               for (i = 0; i < count; ++i)
                        fprintf(fd, " %g", td->td_sminsamplevalue[i]);
                fprintf(fd, "\n");
        }
        if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE)) {
+               int count = (tif->tif_flags & TIFF_PERSAMPLE) ? td->td_samplesperpixel : 1;
                fprintf(fd, "  SMax Sample Value:");
-               for (i = 0; i < td->td_samplesperpixel; ++i)
+               for (i = 0; i < count; ++i)
                        fprintf(fd, " %g", td->td_smaxsamplevalue[i]);
                fprintf(fd, "\n");
        }
@@ -548,8 +580,19 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                                continue;
 
                        if(fip->field_passcount) {
-                               if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
+                               if (fip->field_readcount == TIFF_VARIABLE2 ) {
+                                       if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
+                                               continue;
+                               } else if (fip->field_readcount == TIFF_VARIABLE2 ) {
+                                       uint16 small_value_count;
+                                       if(TIFFGetField(tif, tag, &small_value_count, &raw_data) != 1)
+                                               continue;
+                                       value_count = small_value_count;
+                               } else {
+                                       assert (fip->field_readcount == TIFF_VARIABLE
+                                               || fip->field_readcount == TIFF_VARIABLE2);
                                        continue;
+                               } 
                        } else {
                                if (fip->field_readcount == TIFF_VARIABLE
                                    || fip->field_readcount == TIFF_VARIABLE2)
@@ -558,46 +601,28 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                                        value_count = td->td_samplesperpixel;
                                else
                                        value_count = fip->field_readcount;
-                               if ((fip->field_type == TIFF_ASCII
-                                   || fip->field_readcount == TIFF_VARIABLE
-                                   || fip->field_readcount == TIFF_VARIABLE2
-                                   || fip->field_readcount == TIFF_SPP
-                                   || value_count > 1)
-                                   && fip->field_tag != TIFFTAG_PAGENUMBER
-                                   && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                                   && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                                   && fip->field_tag != TIFFTAG_DOTRANGE) {
+                               if (fip->field_tag == TIFFTAG_DOTRANGE
+                                   && strcmp(fip->field_name,"DotRange") == 0) {
+                                       /* TODO: This is an evil exception and should not have been
+                                          handled this way ... likely best if we move it into
+                                          the directory structure with an explicit field in 
+                                          libtiff 4.1 and assign it a FIELD_ value */
+                                       static uint16 dotrange[2];
+                                       raw_data = dotrange;
+                                       TIFFGetField(tif, tag, dotrange+0, dotrange+1);
+                               } else if (fip->field_type == TIFF_ASCII
+                                          || fip->field_readcount == TIFF_VARIABLE
+                                          || fip->field_readcount == TIFF_VARIABLE2
+                                          || fip->field_readcount == TIFF_SPP
+                                          || value_count > 1) {
                                        if(TIFFGetField(tif, tag, &raw_data) != 1)
                                                continue;
-                               } else if (fip->field_tag != TIFFTAG_PAGENUMBER
-                                   && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                                   && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                                   && fip->field_tag != TIFFTAG_DOTRANGE) {
-                                       raw_data = _TIFFmalloc(
-                                           _TIFFDataSize(fip->field_type)
-                                           * value_count);
-                                       mem_alloc = 1;
-                                       if(TIFFGetField(tif, tag, raw_data) != 1) {
-                                               _TIFFfree(raw_data);
-                                               continue;
-                                       }
                                } else {
-                                       /*
-                                        * XXX: Should be fixed and removed,
-                                        * see the notes related to
-                                        * TIFFTAG_PAGENUMBER,
-                                        * TIFFTAG_HALFTONEHINTS,
-                                        * TIFFTAG_YCBCRSUBSAMPLING and
-                                        * TIFFTAG_DOTRANGE tags in tif_dir.c.
-                                        */
-                                       char *tmp;
                                        raw_data = _TIFFmalloc(
                                            _TIFFDataSize(fip->field_type)
                                            * value_count);
-                                       tmp = raw_data;
                                        mem_alloc = 1;
-                                       if(TIFFGetField(tif, tag, tmp,
-                                           tmp + _TIFFDataSize(fip->field_type)) != 1) {
+                                       if(TIFFGetField(tif, tag, raw_data) != 1) {
                                                _TIFFfree(raw_data);
                                                continue;
                                        }
@@ -610,7 +635,7 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                         * _TIFFPrettyPrintField() fall down and print it as
                         * any other tag.
                         */
-                       if (!_TIFFPrettyPrintField(tif, fd, tag, value_count, raw_data))
+                       if (!_TIFFPrettyPrintField(tif, fip, fd, tag, value_count, raw_data))
                                _TIFFPrintField(fd, fip, value_count, raw_data);
 
                        if(mem_alloc)
@@ -648,7 +673,13 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
 void
 _TIFFprintAscii(FILE* fd, const char* cp)
 {
-       for (; *cp != '\0'; cp++) {
+       _TIFFprintAsciiBounded( fd, cp, strlen(cp));
+}
+
+static void
+_TIFFprintAsciiBounded(FILE* fd, const char* cp, int max_chars)
+{
+       for (; max_chars > 0 && *cp != '\0'; cp++, max_chars--) {
                const char* tp;
 
                if (isprint((int)*cp)) {
index 594733f..3ba31e3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_read.c,v 1.38 2011-12-09 03:29:10 fwarmerdam Exp $ */
+/* $Id: tif_read.c,v 1.40 2012-06-01 00:55:09 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -93,6 +93,7 @@ TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart )
         
         if( unused_data > 0 )
         {
+               assert((tif->tif_flags&TIFF_BUFFERMMAP)==0);
                 memmove( tif->tif_rawdata, tif->tif_rawcp, unused_data );
         }
 
@@ -120,6 +121,7 @@ TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart )
                         - tif->tif_rawdataoff - tif->tif_rawdataloaded;
         }
 
+       assert((tif->tif_flags&TIFF_BUFFERMMAP)==0);
         cc = TIFFReadFile(tif, tif->tif_rawdata + unused_data, to_read);
 
         if (cc != to_read) {
@@ -145,8 +147,10 @@ TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart )
         tif->tif_rawcp = tif->tif_rawdata;
                         
         if (!isFillOrder(tif, td->td_fillorder) &&
-            (tif->tif_flags & TIFF_NOBITREV) == 0)
+            (tif->tif_flags & TIFF_NOBITREV) == 0) {
+               assert((tif->tif_flags&TIFF_BUFFERMMAP)==0);
                 TIFFReverseBits(tif->tif_rawdata + unused_data, to_read );
+       }
 
         /*
         ** When starting a strip from the beginning we need to
@@ -522,8 +526,11 @@ TIFFFillStrip(TIFF* tif, uint32 strip)
                         * buffer (if they try to, the application will get a
                         * fault since the file is mapped read-only).
                         */
-                       if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
+                       if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
                                _TIFFfree(tif->tif_rawdata);
+                               tif->tif_rawdata = NULL;
+                               tif->tif_rawdatasize = 0;
+                       }
                        tif->tif_flags &= ~TIFF_MYBUFFER;
                        /*
                         * We must check for overflow, potentially causing
@@ -565,6 +572,14 @@ TIFFFillStrip(TIFF* tif, uint32 strip)
                        tif->tif_rawdata = tif->tif_base + (tmsize_t)td->td_stripoffset[strip];
                         tif->tif_rawdataoff = 0;
                         tif->tif_rawdataloaded = (tmsize_t) bytecount;
+
+                       /* 
+                        * When we have tif_rawdata reference directly into the memory mapped file
+                        * we need to be pretty careful about how we use the rawdata.  It is not
+                        * a general purpose working buffer as it normally otherwise is.  So we
+                        * keep track of this fact to avoid using it improperly.
+                        */
+                       tif->tif_flags |= TIFF_BUFFERMMAP;
                } else {
                        /*
                         * Expand raw data buffer, if needed, to hold data
@@ -589,6 +604,11 @@ TIFFFillStrip(TIFF* tif, uint32 strip)
                                if (!TIFFReadBufferSetup(tif, 0, bytecountm))
                                        return (0);
                        }
+                       if (tif->tif_flags&TIFF_BUFFERMMAP) {
+                               tif->tif_curstrip = NOSTRIP;
+                               if (!TIFFReadBufferSetup(tif, 0, bytecountm))
+                                       return (0);
+                       }
                        if (TIFFReadRawStrip1(tif, strip, tif->tif_rawdata,
                                bytecountm, module) != bytecountm)
                                return (0);
@@ -809,8 +829,11 @@ TIFFFillTile(TIFF* tif, uint32 tile)
                         * buffer (if they try to, the application will get a
                         * fault since the file is mapped read-only).
                         */
-                       if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
+                       if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
                                _TIFFfree(tif->tif_rawdata);
+                               tif->tif_rawdata = NULL;
+                               tif->tif_rawdatasize = 0;
+                       }
                        tif->tif_flags &= ~TIFF_MYBUFFER;
                        /*
                         * We must check for overflow, potentially causing
@@ -831,6 +854,7 @@ TIFFFillTile(TIFF* tif, uint32 tile)
                                tif->tif_base + (tmsize_t)td->td_stripoffset[tile];
                         tif->tif_rawdataoff = 0;
                         tif->tif_rawdataloaded = (tmsize_t) bytecount;
+                       tif->tif_flags |= TIFF_BUFFERMMAP;
                } else {
                        /*
                         * Expand raw data buffer, if needed, to hold data
@@ -855,6 +879,12 @@ TIFFFillTile(TIFF* tif, uint32 tile)
                                if (!TIFFReadBufferSetup(tif, 0, bytecountm))
                                        return (0);
                        }
+                       if (tif->tif_flags&TIFF_BUFFERMMAP) {
+                               tif->tif_curtile = NOTILE;
+                               if (!TIFFReadBufferSetup(tif, 0, bytecountm))
+                                       return (0);
+                       }
+
                        if (TIFFReadRawTile1(tif, tile, tif->tif_rawdata,
                            bytecountm, module) != bytecountm)
                                return (0);
@@ -886,10 +916,13 @@ TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size)
        static const char module[] = "TIFFReadBufferSetup";
 
        assert((tif->tif_flags&TIFF_NOREADRAW)==0);
+       tif->tif_flags &= ~TIFF_BUFFERMMAP;
+
        if (tif->tif_rawdata) {
                if (tif->tif_flags & TIFF_MYBUFFER)
                        _TIFFfree(tif->tif_rawdata);
                tif->tif_rawdata = NULL;
+               tif->tif_rawdatasize = 0;
        }
        if (bp) {
                tif->tif_rawdatasize = size;
index 3ced5a8..568e489 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_strip.c,v 1.34 2011-04-02 20:54:09 bfriesen Exp $ */
+/* $Id: tif_strip.c,v 1.35 2012-06-06 05:33:55 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1991-1997 Sam Leffler
@@ -107,11 +107,13 @@ TIFFVStripSize64(TIFF* tif, uint32 nrows)
                }
                TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0,
                    ycbcrsubsampling+1);
-               if (((ycbcrsubsampling[0]!=1)&&(ycbcrsubsampling[0]!=2)&&(ycbcrsubsampling[0]!=4)) ||
-                   ((ycbcrsubsampling[1]!=1)&&(ycbcrsubsampling[1]!=2)&&(ycbcrsubsampling[1]!=4)))
+               if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4)
+                   ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4))
                {
                        TIFFErrorExt(tif->tif_clientdata,module,
-                           "Invalid YCbCr subsampling");
+                                    "Invalid YCbCr subsampling (%dx%d)", 
+                                    ycbcrsubsampling[0], 
+                                    ycbcrsubsampling[1] );
                        return 0;
                }
                samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2;
index 062d943..0ff7e85 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_tile.c,v 1.22 2010-07-01 15:33:28 dron Exp $ */
+/* $Id: tif_tile.c,v 1.23 2012-06-06 05:33:55 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1991-1997 Sam Leffler
@@ -203,12 +203,13 @@ TIFFVTileSize64(TIFF* tif, uint32 nrows)
                uint64 samplingrow_size;
                TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0,
                    ycbcrsubsampling+1);
-               assert((ycbcrsubsampling[0]==1)||(ycbcrsubsampling[0]==2)||(ycbcrsubsampling[0]==4));
-               assert((ycbcrsubsampling[1]==1)||(ycbcrsubsampling[1]==2)||(ycbcrsubsampling[1]==4));
-               if (ycbcrsubsampling[0]*ycbcrsubsampling[1]==0)
+               if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4)
+                   ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4))
                {
                        TIFFErrorExt(tif->tif_clientdata,module,
-                           "Invalid YCbCr subsampling");
+                                    "Invalid YCbCr subsampling (%dx%d)", 
+                                    ycbcrsubsampling[0], 
+                                    ycbcrsubsampling[1] );
                        return 0;
                }
                samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2;
index 7c5cc50..1387558 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tif_unix.c,v 1.22 2010-03-10 18:56:49 bfriesen Exp $ */
+/* $Id: tif_unix.c,v 1.23 2012-06-01 21:40:59 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -186,7 +186,11 @@ TIFFOpen(const char* name, const char* mode)
 
        fd = open(name, m, 0666);
        if (fd < 0) {
-               TIFFErrorExt(0, module, "%s: Cannot open", name);
+               if (errno > 0 && strerror(errno) != NULL ) {
+                       TIFFErrorExt(0, module, "%s: %s", name, strerror(errno) );
+               } else {
+                       TIFFErrorExt(0, module, "%s: Cannot open", name);
+               }
                return ((TIFF *)0);
        }
 
index 6ca7434..c88ca19 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tiffio.h,v 1.89 2012-02-18 16:20:26 bfriesen Exp $ */
+/* $Id: tiffio.h,v 1.90 2012-06-06 04:58:00 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -392,6 +392,8 @@ extern int TIFFSetupStrips(TIFF *);
 extern int TIFFWriteCheck(TIFF*, int, const char *);
 extern void TIFFFreeDirectory(TIFF*);
 extern int TIFFCreateDirectory(TIFF*);
+extern int TIFFCreateCustomDirectory(TIFF*,const TIFFFieldArray*);
+extern int TIFFCreateEXIFDirectory(TIFF*);
 extern int TIFFLastDirectory(TIFF*);
 extern int TIFFSetDirectory(TIFF*, uint16);
 extern int TIFFSetSubDirectory(TIFF*, uint64);
@@ -400,6 +402,7 @@ extern int TIFFSetField(TIFF*, uint32, ...);
 extern int TIFFVSetField(TIFF*, uint32, va_list);
 extern int TIFFUnsetField(TIFF*, uint32);
 extern int TIFFWriteDirectory(TIFF *);
+extern int TIFFWriteCustomDirectory(TIFF *, uint64 *);
 extern int TIFFCheckpointDirectory(TIFF *);
 extern int TIFFRewriteDirectory(TIFF *);
 
index 7bed4ab..53357d8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tiffiop.h,v 1.82 2011-02-18 20:53:05 fwarmerdam Exp $ */
+/* $Id: tiffiop.h,v 1.84 2012-05-30 01:50:17 fwarmerdam Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -121,6 +121,7 @@ struct tiff {
         #define TIFF_BUF4WRITE  0x100000 /* rawcc bytes are for writing */
         #define TIFF_DIRTYSTRIP 0x200000 /* stripoffsets/stripbytecount dirty*/
         #define TIFF_PERSAMPLE  0x400000 /* get/set per sample tags as arrays */
+        #define TIFF_BUFFERMMAP 0x800000 /* read buffer (tif_rawdata) points into mmap() memory */
        uint64               tif_diroff;       /* file offset of current directory */
        uint64               tif_nextdiroff;   /* file offset of following directory */
        uint64*              tif_dirlist;      /* list of offsets to already seen directories to prevent IFD looping */
@@ -250,7 +251,7 @@ struct tiff {
 #define TIFFroundup_64(x, y) (TIFFhowmany_64(x,y)*(y))
 
 /* Safe multiply which returns zero if there is an integer overflow */
-#define TIFFSafeMultiply(t,v,m) ((((t)m != (t)0) && (((t)((v*m)/m)) == (t)v)) ? (t)(v*m) : (t)0)
+#define TIFFSafeMultiply(t,v,m) ((((t)(m) != (t)0) && (((t)(((v)*(m))/(m))) == (t)(v))) ? (t)((v)*(m)) : (t)0)
 
 #define TIFFmax(A,B) ((A)>(B)?(A):(B))
 #define TIFFmin(A,B) ((A)<(B)?(A):(B))
index fbdc5a1..38ee9fa 100644 (file)
@@ -1,4 +1,4 @@
-#define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.0.1\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
+#define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.0.2\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
 /*
  * This define can be used in code that requires
  * compilation-related definitions specific to a
@@ -6,4 +6,4 @@
  * version checking should be done based on the
  * string returned by TIFFGetVersion.
  */
-#define TIFFLIB_VERSION 20120218
+#define TIFFLIB_VERSION 20120615