Another fix for the fetching SBYTE arrays by the TIFFFetchByteArray()
function. Should finally resolve http://bugzilla.remotesensing.org/show_bug.cgi?id=52
This commit is contained in:
parent
b7acbf192d
commit
ff993722c9
@ -1,3 +1,10 @@
|
|||||||
|
2002-10-02 Andrey Kiselev <dron@remotesensing.org>
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
2002-09-15 Andrey Kiselev <dron@remotesensing.org>
|
2002-09-15 Andrey Kiselev <dron@remotesensing.org>
|
||||||
|
|
||||||
* Makefile.in, /man/{raw2tiff.1, Makefile.in, libtiff.3}: Added
|
* Makefile.in, /man/{raw2tiff.1, Makefile.in, libtiff.3}: Added
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v 1.12 2002-09-08 18:01:20 warmerda Exp $ */
|
/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v 1.13 2002-10-02 08:46:54 dron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988-1997 Sam Leffler
|
* Copyright (c) 1988-1997 Sam Leffler
|
||||||
@ -780,28 +780,36 @@ TIFFFetchByteArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
|
|||||||
* Extract data from offset field.
|
* Extract data from offset field.
|
||||||
*/
|
*/
|
||||||
if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
|
if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
|
||||||
switch (dir->tdir_count) {
|
if (dir->tdir_type == TIFF_SBYTE)
|
||||||
case 4: v[3] = (uint16)(dir->tdir_offset & 0xff);
|
switch (dir->tdir_count) {
|
||||||
case 3: v[2] = (uint16)((dir->tdir_offset >> 8) & 0xff);
|
case 4: v[3] = (signed char)(dir->tdir_offset & 0xff);
|
||||||
case 2: v[1] = (uint16)((dir->tdir_offset >> 16) & 0xff);
|
case 3: v[2] = (signed char)((dir->tdir_offset >> 8) & 0xff);
|
||||||
case 1:
|
case 2: v[1] = (signed char)((dir->tdir_offset >> 16) & 0xff);
|
||||||
if (dir->tdir_type == TIFF_SBYTE)
|
case 1: v[0] = (signed char)(dir->tdir_offset >> 24);
|
||||||
v[0] = (signed char)(dir->tdir_offset >> 24);
|
}
|
||||||
else
|
else
|
||||||
v[0] = (uint16)(dir->tdir_offset >> 24);
|
switch (dir->tdir_count) {
|
||||||
}
|
case 4: v[3] = (uint16)(dir->tdir_offset & 0xff);
|
||||||
} else {
|
case 3: v[2] = (uint16)((dir->tdir_offset >> 8) & 0xff);
|
||||||
switch (dir->tdir_count) {
|
case 2: v[1] = (uint16)((dir->tdir_offset >> 16) & 0xff);
|
||||||
case 4: v[3] = (uint16)(dir->tdir_offset >> 24);
|
case 1: v[0] = (uint16)(dir->tdir_offset >> 24);
|
||||||
case 3: v[2] = (uint16)((dir->tdir_offset >> 16) & 0xff);
|
}
|
||||||
case 2: v[1] = (uint16)((dir->tdir_offset >> 8) & 0xff);
|
} else {
|
||||||
case 1:
|
if (dir->tdir_type == TIFF_SBYTE)
|
||||||
if (dir->tdir_type == TIFF_SBYTE)
|
switch (dir->tdir_count) {
|
||||||
v[0] = (signed char)((dir->tdir_offset) & 0xff);
|
case 4: v[3] = (signed char)(dir->tdir_offset >> 24);
|
||||||
else
|
case 3: v[2] = (signed char)((dir->tdir_offset >> 16) & 0xff);
|
||||||
v[0] = (uint16)(dir->tdir_offset & 0xff);
|
case 2: v[1] = (signed char)((dir->tdir_offset >> 8) & 0xff);
|
||||||
}
|
case 1: v[0] = (signed char)(dir->tdir_offset & 0xff);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
switch (dir->tdir_count) {
|
||||||
|
case 4: v[3] = (uint16)(dir->tdir_offset >> 24);
|
||||||
|
case 3: v[2] = (uint16)((dir->tdir_offset >> 16) & 0xff);
|
||||||
|
case 2: v[1] = (uint16)((dir->tdir_offset >> 8) & 0xff);
|
||||||
|
case 1: v[0] = (uint16)(dir->tdir_offset & 0xff);
|
||||||
|
}
|
||||||
|
}
|
||||||
return (1);
|
return (1);
|
||||||
} else
|
} else
|
||||||
return (TIFFFetchData(tif, dir, (char*) v) != 0); /* XXX */
|
return (TIFFFetchData(tif, dir, (char*) v) != 0); /* XXX */
|
||||||
|
Loading…
Reference in New Issue
Block a user