On Mon, Apr 11, 2011 at 02:36:17PM -0700, Guy Harris wrote:
>
> On Apr 11, 2011, at 9:12 AM, Guy Harris wrote:
>
> > I'll look at getting rid of the use of the zlib gz* routines for
> > output (just as we've done for input)
>
> Done, as of revision 36563.
Attaching some small fixes.
btw. what do you think about merging GZWFILE_T and WFILE_T?
(i.e. using one API for writting files, wfile_open(), wfile_write(), ...)
diff --git wiretap/file_wrappers.c wiretap/file_wrappers.c
index 633204a..4f2900f 100644
--- wiretap/file_wrappers.c
+++ wiretap/file_wrappers.c
@@ -1018,7 +1043,7 @@ gzwfile_open(const char *path)
if (state == NULL) {
save_errno = errno;
close(fd);
- save_errno = errno;
+ errno = save_errno;
}
return state;
}
@@ -1061,10 +1086,8 @@ gz_init(GZWFILE_T state)
state->in = g_try_malloc(state->want);
state->out = g_try_malloc(state->want);
if (state->in == NULL || state->out == NULL) {
- if (state->out != NULL)
- g_free(state->out);
- if (state->in != NULL)
- g_free(state->in);
+ g_free(state->out);
+ g_free(state->in);
state->err = WTAP_ERR_ZLIB + Z_MEM_ERROR; /* ENOMEM? */
return -1;
}
@@ -1076,6 +1099,7 @@ gz_init(GZWFILE_T state)
ret = deflateInit2(strm, state->level, Z_DEFLATED,
15 + 16, 8, state->strategy);
if (ret != Z_OK) {
+ g_free(state->out);
g_free(state->in);
state->err = WTAP_ERR_ZLIB + Z_MEM_ERROR; /* ENOMEM? */
return -1;