提交 8768ba98 编写于 作者: M Mark Adler

Fix gzclose() to return the actual error last encountered.

上级 acfc8577
......@@ -504,7 +504,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
int ZEXPORT gzclose_w(file)
gzFile file;
{
int ret = 0;
int ret = Z_OK;
gz_statep state;
/* get internal structure */
......@@ -519,17 +519,20 @@ int ZEXPORT gzclose_w(file)
/* check for seek request */
if (state->seek) {
state->seek = 0;
ret += gz_zero(state, state->skip);
if (gz_zero(state, state->skip) == -1)
ret = state->err;
}
/* flush, free memory, and close file */
ret += gz_comp(state, Z_FINISH);
if (gz_comp(state, Z_FINISH) == -1)
ret = state->err;
(void)deflateEnd(&(state->strm));
free(state->out);
free(state->in);
gz_error(state, Z_OK, NULL);
free(state->path);
ret += close(state->fd);
if (close(state->fd) == -1)
ret = Z_ERRNO;
free(state);
return ret ? Z_ERRNO : Z_OK;
return ret;
}
......@@ -1446,7 +1446,7 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file));
must not be called more than once on the same allocation.
gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
file operation error, or Z_OK on success.
file operation error, Z_MEM_ERROR if out of memory, or Z_OK on success.
*/
ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册