r17227 - gnucash/branches/gda-dev2/src/backend/sql - Fix memory leaks

Phil Longstaff plongstaff at cvs.gnucash.org
Thu Jun 12 20:18:48 EDT 2008


Author: plongstaff
Date: 2008-06-12 20:18:48 -0400 (Thu, 12 Jun 2008)
New Revision: 17227
Trac: http://svn.gnucash.org/trac/changeset/17227

Modified:
   gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c
Log:
Fix memory leaks


Modified: gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c	2008-06-13 00:18:26 UTC (rev 17226)
+++ gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c	2008-06-13 00:18:48 UTC (rev 17227)
@@ -1322,6 +1322,7 @@
 	gnc_sql_statement_add_where_cond( sqlStmt, obj_name, pObject, &table[0], (GValue*)(list->data) );
 
     count = gnc_sql_execute_statement_get_count( be, sqlStmt );
+	gnc_sql_statement_dispose( sqlStmt );
     if( count == 0 ) {
         return FALSE;
     } else {
@@ -1441,11 +1442,17 @@
 	values = create_gslist_from_values( be, obj_name, pObject, table );
 	for( node = values; node != NULL; node = node->next ) {
 		GValue* value = (GValue*)node->data;
+		gchar* value_str;
 		if( node != values ) {
 			g_string_append( sql, "," );
 		}
-		g_string_append( sql, gnc_sql_get_sql_value( be->conn, value ) );
+		value_str = gnc_sql_get_sql_value( be->conn, value );
+		g_string_append( sql, value_str );
+		g_free( value_str );
+		g_value_reset( value );
+		g_free( value );
 	}
+	g_slist_free( values );
 	g_string_append( sql, ")" );
 
 	stmt = gnc_sql_connection_create_statement_from_sql( be->conn, sql->str );
@@ -1493,12 +1500,15 @@
 	for( colname = colnames->next, value = values->next;
 					colname != NULL && value != NULL;
 					colname = colname->next, value = value->next ) {
+		gchar* value_str;
 		if( !firstCol ) {
 			g_string_append( sql, "," );
 		}
 		g_string_append( sql, (gchar*)colname->data );
 		g_string_append( sql, "=" );
-		g_string_append( sql, gnc_sql_get_sql_value( be->conn, (GValue*)(value->data) ) );
+		value_str = gnc_sql_get_sql_value( be->conn, (GValue*)(value->data) );
+		g_string_append( sql, value_str );
+		g_free( value_str );
 		firstCol = FALSE;
 	}
 	g_list_free( colnames );



More information about the gnucash-changes mailing list