Index: third_party/libtiff/tif_read.c |
diff --git a/third_party/tiff_v403/tif_read.c b/third_party/libtiff/tif_read.c |
similarity index 95% |
rename from third_party/tiff_v403/tif_read.c |
rename to third_party/libtiff/tif_read.c |
index eb9350846e514969d69ecbed03efaebdc0f675dd..5cb419bd41660a515e5a2762b28124c497c9d3b9 100644 |
--- a/third_party/tiff_v403/tif_read.c |
+++ b/third_party/libtiff/tif_read.c |
@@ -1,4 +1,4 @@ |
-/* $Id: tif_read.c,v 1.41 2012-07-06 19:22:58 bfriesen Exp $ */ |
+/* $Id: tif_read.c,v 1.45 2015-06-07 22:35:40 bfriesen Exp $ */ |
/* |
* Copyright (c) 1988-1997 Sam Leffler |
@@ -47,7 +47,7 @@ TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart ) |
{ |
static const char module[] = "TIFFFillStripPartial"; |
register TIFFDirectory *td = &tif->tif_dir; |
- uint64 unused_data; |
+ tmsize_t unused_data; |
uint64 read_offset; |
tmsize_t cc, to_read; |
/* tmsize_t bytecountm; */ |
@@ -94,7 +94,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, (size_t)unused_data ); |
+ memmove( tif->tif_rawdata, tif->tif_rawcp, unused_data ); |
} |
/* |
@@ -113,12 +113,12 @@ TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart ) |
/* |
** How much do we want to read? |
*/ |
- to_read = (tmsize_t)(tif->tif_rawdatasize - unused_data); |
+ to_read = tif->tif_rawdatasize - unused_data; |
if( (uint64) to_read > td->td_stripbytecount[strip] |
- tif->tif_rawdataoff - tif->tif_rawdataloaded ) |
{ |
- to_read = (tmsize_t)(td->td_stripbytecount[strip] |
- - tif->tif_rawdataoff - tif->tif_rawdataloaded); |
+ to_read = (tmsize_t) td->td_stripbytecount[strip] |
+ - tif->tif_rawdataoff - tif->tif_rawdataloaded; |
} |
assert((tif->tif_flags&TIFF_BUFFERMMAP)==0); |
@@ -141,8 +141,8 @@ TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart ) |
return 0; |
} |
- tif->tif_rawdataoff = (tmsize_t)(tif->tif_rawdataoff + tif->tif_rawdataloaded - unused_data) ; |
- tif->tif_rawdataloaded = (tmsize_t)unused_data + to_read; |
+ tif->tif_rawdataoff = tif->tif_rawdataoff + tif->tif_rawdataloaded - unused_data ; |
+ tif->tif_rawdataloaded = unused_data + to_read; |
tif->tif_rawcp = tif->tif_rawdata; |
@@ -321,7 +321,7 @@ TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size) |
uint32 rowsperstrip; |
uint32 stripsperplane; |
uint32 stripinplane; |
- uint16 plane, comp; |
+ uint16 plane; |
uint32 rows; |
tmsize_t stripsize; |
if (!TIFFCheckRead(tif,0)) |
@@ -352,42 +352,12 @@ TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size) |
return((tmsize_t)(-1)); |
if ((size!=(tmsize_t)(-1))&&(size<stripsize)) |
stripsize=size; |
- |
- /* |
- * discard those. |
- * keep code modified by Changjin Gao. |
- * Xiaochuan Liu 20100828. |
- */ |
- /*if (!TIFFFillStrip(tif,strip)) |
+ if (!TIFFFillStrip(tif,strip)) |
return((tmsize_t)(-1)); |
if ((*tif->tif_decodestrip)(tif,buf,stripsize,plane)<=0) |
return((tmsize_t)(-1)); |
(*tif->tif_postdecode)(tif,buf,stripsize); |
- return(stripsize);*/ |
- |
- /* |
- * Changjin Gao 20110726 fixed decode error issue. |
- * Test file: mantis #27308 020511-1158450.tiff. |
- */ |
- comp = COMPRESSION_NONE; |
-StripDecode: |
- if (TIFFFillStrip(tif, strip) && (*tif->tif_decodestrip)(tif, buf, stripsize, plane) > 0) |
- { |
- (*tif->tif_postdecode)(tif, buf, stripsize); |
- return (stripsize); |
- } |
- else |
- { |
- if (comp < 9) |
- { |
- TIFFSetField(tif, TIFFTAG_COMPRESSION, comp); |
- TIFFSetField(tif, TIFFTAG_FAXMODE,FAXMODE_CLASSIC); |
- comp++; |
- goto StripDecode; |
- } |
- |
- return ((tsize_t) -1); |
- } |
+ return(stripsize); |
} |
static tmsize_t |
@@ -488,7 +458,7 @@ TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size) |
return ((tmsize_t)(-1)); |
} |
bytecount = td->td_stripbytecount[strip]; |
- if (bytecount <= 0) { |
+ if ((int64)bytecount <= 0) { |
#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) |
TIFFErrorExt(tif->tif_clientdata, module, |
"%I64u: Invalid strip byte count, strip %lu", |
@@ -528,7 +498,7 @@ TIFFFillStrip(TIFF* tif, uint32 strip) |
if ((tif->tif_flags&TIFF_NOREADRAW)==0) |
{ |
uint64 bytecount = td->td_stripbytecount[strip]; |
- if (bytecount <= 0) { |
+ if ((int64)bytecount <= 0) { |
#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) |
TIFFErrorExt(tif->tif_clientdata, module, |
"Invalid strip byte count %I64u, strip %lu", |
@@ -831,7 +801,7 @@ TIFFFillTile(TIFF* tif, uint32 tile) |
if ((tif->tif_flags&TIFF_NOREADRAW)==0) |
{ |
uint64 bytecount = td->td_stripbytecount[tile]; |
- if (bytecount <= 0) { |
+ if ((int64)bytecount <= 0) { |
#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) |
TIFFErrorExt(tif->tif_clientdata, module, |
"%I64u: Invalid tile byte count, tile %lu", |
@@ -960,8 +930,11 @@ TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size) |
tif->tif_flags &= ~TIFF_MYBUFFER; |
} else { |
tif->tif_rawdatasize = (tmsize_t)TIFFroundup_64((uint64)size, 1024); |
- if (tif->tif_rawdatasize==0) |
- tif->tif_rawdatasize=(tmsize_t)(-1); |
+ if (tif->tif_rawdatasize==0) { |
+ TIFFErrorExt(tif->tif_clientdata, module, |
+ "Invalid buffer size"); |
+ return (0); |
+ } |
tif->tif_rawdata = (uint8*) _TIFFmalloc(tif->tif_rawdatasize); |
tif->tif_flags |= TIFF_MYBUFFER; |
} |
@@ -1017,10 +990,12 @@ TIFFStartStrip(TIFF* tif, uint32 strip) |
static int |
TIFFStartTile(TIFF* tif, uint32 tile) |
{ |
+ static const char module[] = "TIFFStartTile"; |
TIFFDirectory *td = &tif->tif_dir; |
+ uint32 howmany32; |
- if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) |
- return 0; |
+ if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) |
+ return 0; |
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { |
if (!(*tif->tif_setupdecode)(tif)) |
@@ -1028,12 +1003,18 @@ TIFFStartTile(TIFF* tif, uint32 tile) |
tif->tif_flags |= TIFF_CODERSETUP; |
} |
tif->tif_curtile = tile; |
- tif->tif_row = |
- (tile % TIFFhowmany_32(td->td_imagewidth, td->td_tilewidth)) * |
- td->td_tilelength; |
- tif->tif_col = |
- (tile % TIFFhowmany_32(td->td_imagelength, td->td_tilelength)) * |
- td->td_tilewidth; |
+ howmany32=TIFFhowmany_32(td->td_imagewidth, td->td_tilewidth); |
+ if (howmany32 == 0) { |
+ TIFFErrorExt(tif->tif_clientdata,module,"Zero tiles"); |
+ return 0; |
+ } |
+ tif->tif_row = (tile % howmany32) * td->td_tilelength; |
+ howmany32=TIFFhowmany_32(td->td_imagelength, td->td_tilelength); |
+ if (howmany32 == 0) { |
+ TIFFErrorExt(tif->tif_clientdata,module,"Zero tiles"); |
+ return 0; |
+ } |
+ tif->tif_col = (tile % howmany32) * td->td_tilewidth; |
tif->tif_flags &= ~TIFF_BUF4WRITE; |
if (tif->tif_flags&TIFF_NOREADRAW) |
{ |
@@ -1111,4 +1092,3 @@ _TIFFSwab64BitData(TIFF* tif, uint8* buf, tmsize_t cc) |
* fill-column: 78 |
* End: |
*/ |
- |