1

我发现对于某些情况(GZIPInputStream throw IOException),存在泄漏-在第一条语句中构造的 GZIPInputStream 的 Inflater 成员未通过函数“end()”正确释放。在这种情况下,GZIPInputStream 没有被构造,所以调用函数不能关闭它。GZIPInputStream 真的错了吗?

public GZIPInputStream(InputStream is, int size) throws IOException {
    super(is, new Inflater(true), size);
    byte[] header = new byte[10];
    readFully(header, 0, header.length);
    int magic = getShort(header, 0);
    if (magic != GZIP_MAGIC) {
        throw new IOException(String.format("unknown format (magic number %x)", magic));
    }
    ......
}
4

0 回答 0