2009-05-07 2 views
1

TIFFOpen()으로 잘못된 TIFF 파일을 열려고하면이 함수는 NULL을 반환합니다. 어떤 이유로 오류 핸들러가 호출되지 않습니다. 그러나 파일이 열려 있으므로 같은 프로세스에서 삭제하거나 덮어 쓸 수 없습니다. TiffLib가 잘못된 파일로 핸들을 누설합니다.

나는 내가 나 자신을 처리 닫을 수 있도록 TIFFFdOpen()를 사용했지만, 어떤 이유로 그것은 나에게 유효 TIFFs에이 오류를 제공합니다 "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)       = ? 

입니다. 정상적인 오류 및 누출이 없습니다 (종료 전에 명시 적으로 닫음). 나는 내 자신의 코드로 동일한 동작을 얻는다.

+0

좋은 지적. 3.7.3 어쨌든,이 오류는 TIFFOpen()에없는 것일 수 있습니다. 크기가 0 인 파일은 어떻게됩니까? – Lev