r18483 - gnucash/trunk/src/backend - Fix some memory leaks found by valgrinding tests
Phil Longstaff
plongstaff at code.gnucash.org
Thu Dec 10 21:28:08 EST 2009
Author: plongstaff
Date: 2009-12-10 21:28:07 -0500 (Thu, 10 Dec 2009)
New Revision: 18483
Trac: http://svn.gnucash.org/trac/changeset/18483
Modified:
gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
gnucash/trunk/src/backend/dbi/test/test-dbi-stuff.c
gnucash/trunk/src/backend/dbi/test/test-dbi.c
gnucash/trunk/src/backend/sql/gnc-backend-sql.c
gnucash/trunk/src/backend/sql/gnc-backend-sql.h
gnucash/trunk/src/backend/sql/gnc-transaction-sql.c
Log:
Fix some memory leaks found by valgrinding tests
Modified: gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c 2009-12-10 22:39:33 UTC (rev 18482)
+++ gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c 2009-12-11 02:28:07 UTC (rev 18483)
@@ -622,7 +622,10 @@
ENTER (" ");
- dbi_conn_close( be->conn );
+ if( be->conn != NULL ) {
+ dbi_conn_close( be->conn );
+ be->conn = NULL;
+ }
gnc_sql_finalize_version_info( &be->sql_be );
LEAVE (" ");
@@ -679,7 +682,11 @@
dbname = dbi_conn_get_option( be->conn, "dbname" );
table_name_list = ((GncDbiSqlConnection*)(be->sql_be.conn))->provider->get_table_list( be->conn, dbname );
if( table_name_list != NULL ) {
+ GSList* node;
numTables = g_slist_length( table_name_list );
+ for( node = table_name_list; node != NULL; node = node->next ) {
+ g_free( node->data );
+ }
g_slist_free( table_name_list );
}
@@ -717,6 +724,7 @@
qof_backend_set_error( qbe, ERR_BACKEND_SERVER_ERR );
}
}
+ g_free( node->data );
}
g_slist_free( table_name_list );
}
@@ -1478,6 +1486,8 @@
if( !info->null_allowed ) {
(void)g_string_append( ddl, " NOT NULL" );
}
+ g_free( info->name );
+ g_free( info );
}
(void)g_string_append( ddl, ")" );
@@ -1540,6 +1550,8 @@
if( !info->null_allowed ) {
(void)g_string_append( ddl, " NOT NULL" );
}
+ g_free( info->name );
+ g_free( info );
}
(void)g_string_append( ddl, ")" );
@@ -1602,6 +1614,8 @@
(void)g_string_append( ddl, " NOT NULL" );
}
is_unicode = is_unicode || info->is_unicode;
+ g_free( info->name );
+ g_free( info );
}
(void)g_string_append( ddl, ")" );
if( is_unicode ) {
@@ -1612,7 +1626,7 @@
static gboolean
conn_create_table( GncSqlConnection* conn, const gchar* table_name,
- const GList* col_info_list )
+ GList* col_info_list )
{
GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn;
gchar* ddl;
@@ -1625,11 +1639,13 @@
ddl = dbi_conn->provider->create_table_ddl( conn, table_name,
col_info_list );
+ g_list_free( col_info_list );
if( ddl != NULL ) {
gint status;
DEBUG( "SQL: %s\n", ddl );
result = dbi_conn_query( dbi_conn->conn, ddl );
+ g_free( ddl );
status = dbi_result_free( result );
if( status < 0 ) {
PERR( "Error in dbi_result_free() result\n" );
@@ -1662,6 +1678,7 @@
DEBUG( "SQL: %s\n", ddl );
result = dbi_conn_query( dbi_conn->conn, ddl );
+ g_free( ddl );
status = dbi_result_free( result );
if( status < 0 ) {
PERR( "Error in dbi_result_free() result\n" );
Modified: gnucash/trunk/src/backend/dbi/test/test-dbi-stuff.c
===================================================================
--- gnucash/trunk/src/backend/dbi/test/test-dbi-stuff.c 2009-12-10 22:39:33 UTC (rev 18482)
+++ gnucash/trunk/src/backend/dbi/test/test-dbi-stuff.c 2009-12-11 02:28:07 UTC (rev 18483)
@@ -398,4 +398,10 @@
// Compare with the original data
compare_books( qof_session_get_book( session_2 ), qof_session_get_book( session_3 ) );
+ qof_session_end( session_1 );
+ qof_session_destroy( session_1 );
+ qof_session_end( session_2 );
+ qof_session_destroy( session_2 );
+ qof_session_end( session_3 );
+ qof_session_destroy( session_3 );
}
Modified: gnucash/trunk/src/backend/dbi/test/test-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/test/test-dbi.c 2009-12-10 22:39:33 UTC (rev 18482)
+++ gnucash/trunk/src/backend/dbi/test/test-dbi.c 2009-12-11 02:28:07 UTC (rev 18483)
@@ -55,12 +55,20 @@
filename = tempnam( "/tmp", "test-sqlite3-" );
printf( "Using filename: %s\n", filename );
test_dbi_store_and_reload( "sqlite3", session_1, filename );
+
printf( "TEST_MYSQL_URL='%s'\n", TEST_MYSQL_URL );
if( strlen( TEST_MYSQL_URL ) > 0 ) {
+ session_1 = qof_session_new();
+ qof_session_begin( session_1, DBI_TEST_XML_FILENAME, FALSE, FALSE );
+ qof_session_load( session_1, NULL );
test_dbi_store_and_reload( "mysql", session_1, TEST_MYSQL_URL );
}
+
printf( "TEST_PGSQL_URL='%s'\n", TEST_PGSQL_URL );
if( strlen( TEST_PGSQL_URL ) > 0 ) {
+ session_1 = qof_session_new();
+ qof_session_begin( session_1, DBI_TEST_XML_FILENAME, FALSE, FALSE );
+ qof_session_load( session_1, NULL );
test_dbi_store_and_reload( "pgsql", session_1, TEST_PGSQL_URL );
}
print_test_results();
Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.c 2009-12-10 22:39:33 UTC (rev 18482)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.c 2009-12-11 02:28:07 UTC (rev 18483)
@@ -2393,6 +2393,7 @@
g_string_append( sql, "," );
}
g_string_append( sql, (gchar*)colname->data );
+ g_free( colname->data );
}
g_list_free( colnames );
@@ -2469,6 +2470,7 @@
(void)g_string_append( sql, "," );
}
(void)g_string_append( sql, (gchar*)colname->data );
+ g_free( colname->data );
(void)g_string_append( sql, "=" );
value_str = gnc_sql_get_sql_value( be->conn, (GValue*)(value->data) );
(void)g_string_append( sql, value_str );
@@ -2482,6 +2484,9 @@
stmt = gnc_sql_connection_create_statement_from_sql( be->conn, sql->str );
gnc_sql_statement_add_where_cond( stmt, obj_name, pObject, &table[0], (GValue*)(values->data) );
+ for( value = values; value != NULL; value = value->next ) {
+ g_free( value->data );
+ }
g_slist_free( values );
(void)g_string_free( sql, TRUE );
Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.h
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.h 2009-12-10 22:39:33 UTC (rev 18482)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.h 2009-12-11 02:28:07 UTC (rev 18483)
@@ -167,7 +167,7 @@
gboolean (*beginTransaction)( GncSqlConnection* ); /**< Returns TRUE if successful, FALSE if error */
gboolean (*rollbackTransaction)( GncSqlConnection* ); /**< Returns TRUE if successful, FALSE if error */
gboolean (*commitTransaction)( GncSqlConnection* ); /**< Returns TRUE if successful, FALSE if error */
- gboolean (*createTable)( GncSqlConnection*, const gchar*, const GList* ); /**< Returns TRUE if successful, FALSE if error */
+ gboolean (*createTable)( GncSqlConnection*, const gchar*, GList* ); /**< Returns TRUE if successful, FALSE if error */
gboolean (*createIndex)( GncSqlConnection*, const gchar*, const gchar*, const GncSqlColumnTableEntry* ); /**< Returns TRUE if successful, FALSE if error */
gchar* (*quoteString)( const GncSqlConnection*, gchar* );
};
@@ -290,7 +290,7 @@
* a column in a table.
*/
typedef struct {
- /*@ only @*/ const gchar* name; /**< Column name */
+ /*@ only @*/ gchar* name; /**< Column name */
GncSqlBasicColumnType type; /**< Column basic type */
gint size; /**< Column size (string types) */
gboolean is_unicode; /**< Column is unicode (string types) */
Modified: gnucash/trunk/src/backend/sql/gnc-transaction-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-transaction-sql.c 2009-12-10 22:39:33 UTC (rev 18482)
+++ gnucash/trunk/src/backend/sql/gnc-transaction-sql.c 2009-12-11 02:28:07 UTC (rev 18483)
@@ -399,6 +399,7 @@
Transaction* pTx = GNC_TRANSACTION(node->data);
xaccTransCommitEdit( pTx );
}
+ g_list_free( tx_list );
#if LOAD_TRANSACTIONS_AS_NEEDED
// Update the account balances based on the loaded splits. If the end
More information about the gnucash-changes
mailing list