代码之家  ›  专栏  ›  技术社区  ›  Lev

TiffLib泄漏对无效文件的句柄

  •  1
  • Lev  · 技术社区  · 17 年前

    TIFFOpen() NULL . 由于某些原因,错误处理程序未被调用。但是,该文件仍处于打开状态,因此无法从同一进程中删除/覆盖它。

    我试着用 TIFFFdOpen() “无法读取TIFF标题” . 这次通过错误处理程序传递错误。

    更新:我指的是 TIFFOpen() 本身,不在稍后调用的函数中。例如,如果TIFF文件的大小为零,则可能会发生这种情况。

    1 回复  |  直到 11 年前
        1
  •  0
  •   jrgc    17 年前

    也许你有一个旧的或坏的口香糖?我试过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)                           = ?
    

    有一个明智的错误,没有泄漏(在出口之前显式关闭)。我对自己的代码也有同样的行为。