forked from osmocom/wireshark
col_cleanup() is undoing the allocations that col_init() does, so it's
freeing the allocated array of pointers, not what the pointers ported to, so it should free col_data. Note that it does that, and put it after col_init() in the source file and header file. Put in a comment explaining the MSVC bug that we're working around with the casts. svn path=/trunk/; revision=45393
This commit is contained in:
parent
7c5f2ec024
commit
9d4d1a5794
|
@ -43,25 +43,6 @@
|
||||||
#include <epan/strutil.h>
|
#include <epan/strutil.h>
|
||||||
#include <epan/epan.h>
|
#include <epan/epan.h>
|
||||||
|
|
||||||
/* Cleanup all the data structures for constructing column data */
|
|
||||||
void
|
|
||||||
col_cleanup(column_info *cinfo)
|
|
||||||
{
|
|
||||||
g_free(cinfo->col_fmt);
|
|
||||||
g_free(cinfo->fmt_matx);
|
|
||||||
g_free(cinfo->col_first);
|
|
||||||
g_free(cinfo->col_last);
|
|
||||||
g_free(cinfo->col_title);
|
|
||||||
g_free(cinfo->col_custom_field);
|
|
||||||
g_free(cinfo->col_custom_occurrence);
|
|
||||||
g_free(cinfo->col_custom_field_id);
|
|
||||||
g_free(cinfo->col_custom_dfilter);
|
|
||||||
g_free(cinfo->col_buf);
|
|
||||||
g_free(cinfo->col_fence);
|
|
||||||
g_free((gchar **)cinfo->col_expr.col_expr);
|
|
||||||
g_free(cinfo->col_expr.col_expr_val);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate all the data structures for constructing column data, given
|
/* Allocate all the data structures for constructing column data, given
|
||||||
the number of columns. */
|
the number of columns. */
|
||||||
void
|
void
|
||||||
|
@ -91,6 +72,35 @@ col_setup(column_info *cinfo, const gint num_cols)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Cleanup all the data structures for constructing column data; undoes
|
||||||
|
the allocations that col_setup() does. */
|
||||||
|
void
|
||||||
|
col_cleanup(column_info *cinfo)
|
||||||
|
{
|
||||||
|
g_free(cinfo->col_fmt);
|
||||||
|
g_free(cinfo->fmt_matx);
|
||||||
|
g_free(cinfo->col_first);
|
||||||
|
g_free(cinfo->col_last);
|
||||||
|
g_free(cinfo->col_title);
|
||||||
|
g_free(cinfo->col_custom_field);
|
||||||
|
g_free(cinfo->col_custom_occurrence);
|
||||||
|
g_free(cinfo->col_custom_field_id);
|
||||||
|
g_free(cinfo->col_custom_dfilter);
|
||||||
|
/*
|
||||||
|
* XXX - MSVC doesn't correctly handle the "const" qualifier; it thinks
|
||||||
|
* "const XXX **" means "pointer to const pointer to XXX", i.e. that
|
||||||
|
* it's a pointer to something that's "const"ant, not "pointer to
|
||||||
|
* pointer to const XXX", i.e. that it's a pointer to a pointer to
|
||||||
|
* something that's "const"ant. Cast its bogus complaints away.
|
||||||
|
*/
|
||||||
|
g_free((gchar **)cinfo->col_data);
|
||||||
|
g_free(cinfo->col_buf);
|
||||||
|
g_free(cinfo->col_fence);
|
||||||
|
/* XXX - see above */
|
||||||
|
g_free((gchar **)cinfo->col_expr.col_expr);
|
||||||
|
g_free(cinfo->col_expr.col_expr_val);
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the data structures for constructing column data. */
|
/* Initialize the data structures for constructing column data. */
|
||||||
void
|
void
|
||||||
col_init(column_info *cinfo)
|
col_init(column_info *cinfo)
|
||||||
|
|
|
@ -39,12 +39,6 @@ extern "C" {
|
||||||
* Helper routines for column utility structures and routines.
|
* Helper routines for column utility structures and routines.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** Cleanup all the data structures for constructing column data
|
|
||||||
*
|
|
||||||
* Internal, don't use this in dissectors!
|
|
||||||
*/
|
|
||||||
extern void col_cleanup(column_info *cinfo);
|
|
||||||
|
|
||||||
/** Allocate all the data structures for constructing column data, given
|
/** Allocate all the data structures for constructing column data, given
|
||||||
* the number of columns.
|
* the number of columns.
|
||||||
*
|
*
|
||||||
|
@ -52,6 +46,13 @@ extern void col_cleanup(column_info *cinfo);
|
||||||
*/
|
*/
|
||||||
extern void col_setup(column_info *cinfo, const gint num_cols);
|
extern void col_setup(column_info *cinfo, const gint num_cols);
|
||||||
|
|
||||||
|
/** Cleanup all the data structures for constructing column data;
|
||||||
|
* undoes the alocations that col_setup() does.
|
||||||
|
*
|
||||||
|
* Internal, don't use this in dissectors!
|
||||||
|
*/
|
||||||
|
extern void col_cleanup(column_info *cinfo);
|
||||||
|
|
||||||
/** Initialize the data structures for constructing column data.
|
/** Initialize the data structures for constructing column data.
|
||||||
*
|
*
|
||||||
* Internal, don't use this in dissectors!
|
* Internal, don't use this in dissectors!
|
||||||
|
|
Loading…
Reference in New Issue