From 1d39126de6b84c3cb40773a6acbea763e1372ebe Mon Sep 17 00:00:00 2001 From: William Rogers Date: Fri, 14 Jun 2013 12:36:20 -0500 Subject: [PATCH] Memory leak wrong fix Free col->sargs Note this patch causes SEGV --- src/libmdb/table.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libmdb/table.c b/src/libmdb/table.c index 66bc000..c0c8225 100644 --- a/src/libmdb/table.c +++ b/src/libmdb/table.c @@ -199,11 +199,20 @@ void mdb_append_column(GPtrArray *columns, MdbColumn *in_col) } void mdb_free_columns(GPtrArray *columns) { - unsigned int i; + unsigned int i, j; + MdbColumn *col; if (!columns) return; - for (i=0; ilen; i++) - g_free (g_ptr_array_index(columns, i)); + for (i=0; ilen; i++) { + col = (MdbColumn *) g_ptr_array_index(columns, i); + if (col->sargs) { + for (j=0; jsargs->len; j++) { + g_free( g_ptr_array_index(col->sargs, i)); + } + g_ptr_array_free(col->sargs, TRUE); + } + g_free(col); + } g_ptr_array_free(columns, TRUE); } GPtrArray *mdb_read_columns(MdbTableDef *table)