如果我尝试使用TIFFOpen()
打开无效的TIFF文件,该函数将返回NULL
。由于某种原因,不会调用错误处理程序。但是,该文件仍保持打开状态,因此我无法从同一进程中删除/覆盖它。
我尝试使用TIFFFdOpen()
,以便我可以自己关闭句柄,但由于某种原因,它会在有效的TIFF上出现此错误:“无法读取TIFF标题”。这次错误通过错误处理程序传递。
如何解决这两个问题?
更新:我在谈论TIFFOpen()
本身的问题,而不是稍后调用的函数。例如,如果TIFF文件的大小为零,则可能会出现这种情况。
答案 0 :(得分:0)
也许你有一个老的或破损的libtiff?我尝试使用libtiff-3.8.2,它似乎工作正常:
$ head -c 1000000 sample.tif > broken.tif
$ tiffinfo broken.tif
TIFFReadDirectory: broken.tif: Can not read TIFF directory count.
$ strace tiffinfo broken.tif
...
open("broken.tif", O_RDONLY) = 3
...
write(2, "broken.tif: Can not read TIFF dir"...
...
close(3) = 0
exit_group(0) = ?
IE中。有一个理智的错误,没有泄漏(退出前明确关闭)。我用自己的代码得到了同样的行为。