mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-23 15:54:09 +03:00
Merge pull request #7199 from radarhere/tiff_close
This commit is contained in:
commit
0ac3677b56
|
@ -1253,9 +1253,8 @@ class TiffImageFile(ImageFile.ImageFile):
|
|||
# To be nice on memory footprint, if there's a
|
||||
# file descriptor, use that instead of reading
|
||||
# into a string in python.
|
||||
# libtiff closes the file descriptor, so pass in a dup.
|
||||
try:
|
||||
fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno())
|
||||
fp = hasattr(self.fp, "fileno") and self.fp.fileno()
|
||||
# flush the file descriptor, prevents error on pypy 2.4+
|
||||
# should also eliminate the need for fp.tell
|
||||
# in _seek
|
||||
|
@ -1305,18 +1304,11 @@ class TiffImageFile(ImageFile.ImageFile):
|
|||
# UNDONE -- so much for that buffer size thing.
|
||||
n, err = decoder.decode(self.fp.read())
|
||||
|
||||
if fp:
|
||||
try:
|
||||
os.close(fp)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
self.tile = []
|
||||
self.readonly = 0
|
||||
|
||||
self.load_end()
|
||||
|
||||
# libtiff closed the fp in a, we need to close self.fp, if possible
|
||||
if close_self_fp:
|
||||
self.fp.close()
|
||||
self.fp = None # might be shared
|
||||
|
|
|
@ -720,7 +720,16 @@ ImagingLibTiffDecode(
|
|||
}
|
||||
|
||||
decode_err:
|
||||
TIFFClose(tiff);
|
||||
// TIFFClose in libtiff calls tif_closeproc and TIFFCleanup
|
||||
if (clientstate->fp) {
|
||||
// Pillow will manage the closing of the file rather than libtiff
|
||||
// So only call TIFFCleanup
|
||||
TIFFCleanup(tiff);
|
||||
} else {
|
||||
// When tif_closeproc refers to our custom _tiffCloseProc though,
|
||||
// that is fine, as it does not close the file
|
||||
TIFFClose(tiff);
|
||||
}
|
||||
TRACE(("Done Decoding, Returning \n"));
|
||||
// Returning -1 here to force ImageFile.load to break, rather than
|
||||
// even think about looping back around.
|
||||
|
|
Loading…
Reference in New Issue
Block a user