Don't leak memory when closing a pppdump trace file.

The second argument to g_ptr_array_free() does not indicate to
glib to free the objects that the pointers in the GPtrArray refer to,
but simply whether or not the free the block of pointers.  We have
to free the objects ourselves.

svn path=/trunk/; revision=4391
This commit is contained in:
Gilbert Ramirez 2001-12-13 05:49:13 +00:00
parent 7e092f2dd8
commit 82380ce2c4
2 changed files with 12 additions and 3 deletions

View File

@ -1,6 +1,6 @@
/* pppdump.c
*
* $Id: pppdump.c,v 1.10 2001/11/13 23:55:44 gram Exp $
* $Id: pppdump.c,v 1.11 2001/12/13 05:49:12 gram Exp $
*
* Copyright (c) 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
*
@ -589,7 +589,11 @@ pppdump_close(wtap *wth)
}
if (state->pids) { /* should always be TRUE */
g_ptr_array_free(state->pids, TRUE); /* free data, too */
int i;
for (i = 0; i < g_ptr_array_len(state->pids); i++) {
g_free(g_ptr_array_index(state->pids, i));
}
g_ptr_array_free(state->pids, TRUE);
}
g_free(state);

View File

@ -1,6 +1,6 @@
/* wtap-int.h
*
* $Id: wtap-int.h,v 1.17 2001/12/04 08:26:00 guy Exp $
* $Id: wtap-int.h,v 1.18 2001/12/13 05:49:13 gram Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
@ -347,4 +347,9 @@ struct wtap_dumper {
} \
G_STMT_END
/* glib doesn't have g_ptr_array_len of all things!*/
#ifndef g_ptr_array_len
#define g_ptr_array_len(a) ((a)->len)
#endif
#endif /* __WTAP_INT_H__ */