r16780 - gnucash/branches/gda-dev2/src/backend/gda - Add function parameter checks

Phil Longstaff plongstaff at cvs.gnucash.org
Tue Jan 1 15:55:26 EST 2008


Author: plongstaff
Date: 2008-01-01 15:55:25 -0500 (Tue, 01 Jan 2008)
New Revision: 16780
Trac: http://svn.gnucash.org/trac/changeset/16780

Modified:
   gnucash/branches/gda-dev2/src/backend/gda/gnc-account-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-book-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-commodity-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-transaction-gda.c
Log:
Add function parameter checks



Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-account-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-account-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-account-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -83,10 +83,15 @@
 static gpointer
 get_parent( gpointer pObject, const QofParam* param )
 {
-    const Account* pAccount = GNC_ACCOUNT(pObject);
-    const Account* pParent = gnc_account_get_parent( pAccount );
+    const Account* pAccount;
+    const Account* pParent;
     const GUID* parent_guid;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_ACCOUNT(pObject), NULL );
+
+    pAccount = GNC_ACCOUNT(pObject);
+    pParent = gnc_account_get_parent( pAccount );
     if( pParent == NULL ) {
         parent_guid = NULL;
     } else {
@@ -99,11 +104,16 @@
 static void 
 set_parent( gpointer pObject, gpointer pValue )
 {
-    Account* pAccount = GNC_ACCOUNT(pObject);
-    QofBook* pBook = qof_instance_get_book( QOF_INSTANCE(pAccount) );
+    Account* pAccount;
+    QofBook* pBook;
     GUID* guid = (GUID*)pValue;
     Account* pParent;
     
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_ACCOUNT(pObject) );
+
+    pAccount = GNC_ACCOUNT(pObject);
+    pBook = qof_instance_get_book( QOF_INSTANCE(pAccount) );
     if( guid != NULL ) {
         pParent = xaccAccountLookup( guid, pBook );
         if( pParent != NULL ) {
@@ -118,6 +128,9 @@
 	account_parent_guid_struct* s = (account_parent_guid_struct*)pObject;
     GUID* guid = (GUID*)pValue;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
 	s->guid = *guid;
 }
 
@@ -128,6 +141,9 @@
 	gnc_numeric cleared_balance;
 	gnc_numeric reconciled_balance;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pAccount != NULL );
+
 	gnc_gda_get_account_balances( be, pAccount, &start_balance, &cleared_balance, &reconciled_balance );
 
     g_object_set( pAccount,
@@ -137,7 +153,7 @@
                 NULL);
 }
 
-static Account*
+static void
 load_single_account( GncGdaBackend* be, GdaDataModel* pModel, int row,
 				GList** l_accounts_needing_parents )
 {
@@ -145,6 +161,11 @@
     GUID acc_guid;
 	Account* pAccount;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( l_accounts_needing_parents != NULL );
+
     guid = gnc_gda_load_guid( be, pModel, row );
     acc_guid = *guid;
 
@@ -167,8 +188,6 @@
 		gnc_gda_load_object( be, pModel, row, GNC_ID_ACCOUNT, s, parent_col_table );
 		*l_accounts_needing_parents = g_list_prepend( *l_accounts_needing_parents, s );
 	}
-
-    return pAccount;
 }
 
 static void
@@ -176,9 +195,14 @@
 {
     static GdaQuery* query = NULL;
     GdaObject* ret;
-    QofBook* pBook = be->primary_book;
-    gnc_commodity_table* pTable = gnc_commodity_table_get_table( pBook );
+    QofBook* pBook;
+    gnc_commodity_table* pTable;
 
+	g_return_if_fail( be != NULL );
+
+    pBook = be->primary_book;
+    pTable = gnc_commodity_table_get_table( pBook );
+
     /* First time, create the query */
     if( query == NULL ) {
         query = gnc_gda_create_select_query( be, TABLE_NAME );
@@ -189,12 +213,11 @@
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
         int numRows = gda_data_model_get_n_rows( pModel );
         int r;
-        Account* pAccount;
         Account* parent;
 		GList* l_accounts_needing_parents = NULL;
 
         for( r = 0; r < numRows; r++ ) {
-            pAccount = load_single_account( be, pModel, r, &l_accounts_needing_parents );
+            load_single_account( be, pModel, r, &l_accounts_needing_parents );
         }
 
 		/* While there are items on the list of accounts needing parents,
@@ -230,7 +253,7 @@
                 if( root == NULL ) {
                     root = gnc_account_create_root( pBook );
                 }
-                gnc_account_append_child( root, pAccount ); 
+                gnc_account_append_child( root, s->pAccount ); 
 			}
 		}
     }
@@ -240,6 +263,8 @@
 static void
 create_account_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, TABLE_NAME, col_table );
 }
 
@@ -250,6 +275,10 @@
     Account* pAcc = GNC_ACCOUNT(inst);
     const GUID* guid;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_ACCOUNT(inst) );
+
     // If there is no commodity yet, this might be because a new account name has been entered directly
     // into the register and an account window will be opened.  The account info is not complete yet,
     // but the name has been set, triggering this commit
@@ -277,14 +306,20 @@
 static void
 load_account_guid( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GUID guid;
     const GUID* pGuid;
 	Account* account = NULL;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         pGuid = NULL;
     } else {
@@ -294,8 +329,8 @@
 	if( pGuid != NULL ) {
 		account = xaccAccountLookup( pGuid, be->primary_book );
 	}
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, account, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, account, NULL );
     } else {
 		(*setter)( pObject, (const gpointer)account );
     }

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -41,6 +41,7 @@
 #include "gnc-engine.h"
 #include "SX-book.h"
 #include "Recurrence.h"
+#include "gnc-budget.h"
 
 #include "gnc-backend-util-gda.h"
 #include "gnc-gconf-utils.h"
@@ -101,12 +102,12 @@
 }
 
 static void
-gnc_gda_session_begin(QofBackend *be_start, QofSession *session, 
-                   const gchar *book_id,
-                   gboolean ignore_lock,
-				   gboolean create_if_nonexistent)
+gnc_gda_session_begin( QofBackend *be_start, QofSession *session, 
+	                   const gchar *book_id,
+                       gboolean ignore_lock,
+				       gboolean create_if_nonexistent )
 {
-    GncGdaBackend *be = (GncGdaBackend*) be_start;
+    GncGdaBackend *be = (GncGdaBackend*)be_start;
     GError* error = NULL;
     gda_backend be_data;
     gchar* book_info;
@@ -114,6 +115,10 @@
     gchar* username = "";
     gchar* password = "";
 
+	g_return_if_fail( be_start != NULL );
+	g_return_if_fail( session != NULL );
+	g_return_if_fail( book_id != NULL );
+
     ENTER (" ");
 
     be->pClient = gda_client_new();
@@ -277,6 +282,9 @@
 gnc_gda_session_end(QofBackend *be_start)
 {
     GncGdaBackend *be = (GncGdaBackend*)be_start;
+
+	g_return_if_fail( be_start != NULL );
+
     ENTER (" ");
 
     if( be->pDict != NULL ) {
@@ -298,6 +306,8 @@
 static void
 gnc_gda_destroy_backend(QofBackend *be)
 {
+	g_return_if_fail( be != NULL );
+
     g_free( be );
 }
 
@@ -334,6 +344,9 @@
     GncGdaDataType_t* pData;
 	int i;
 
+	g_return_if_fail( be_start != NULL );
+	g_return_if_fail( book != NULL );
+
     ENTER( "be=%p, book=%p", be, book );
 
     g_assert( be->primary_book == NULL );
@@ -368,18 +381,20 @@
 static gint
 compare_namespaces(gconstpointer a, gconstpointer b)
 {
-  const gchar *sa = (const gchar *) a;
-  const gchar *sb = (const gchar *) b;
-  return(safe_strcmp(sa, sb));
+    const gchar *sa = (const gchar *) a;
+    const gchar *sb = (const gchar *) b;
+
+    return( safe_strcmp( sa, sb ) );
 }
 
 static gint
 compare_commodity_ids(gconstpointer a, gconstpointer b)
 {
-  const gnc_commodity *ca = (const gnc_commodity *) a;
-  const gnc_commodity *cb = (const gnc_commodity *) b;
-  return(safe_strcmp(gnc_commodity_get_mnemonic(ca),
-                     gnc_commodity_get_mnemonic(cb)));
+    const gnc_commodity *ca = (const gnc_commodity *) a;
+    const gnc_commodity *cb = (const gnc_commodity *) b;
+  
+    return( safe_strcmp( gnc_commodity_get_mnemonic( ca ),
+                     	 gnc_commodity_get_mnemonic( cb ) ) );
 }
 
 static void
@@ -389,6 +404,9 @@
     GList* namespaces;
     GList* lp;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
     tbl = gnc_book_get_commodity_table( book );
     namespaces = gnc_commodity_table_get_namespaces( tbl );
     if( namespaces != NULL ) {
@@ -402,7 +420,7 @@
         comms = g_list_sort( comms, compare_commodity_ids );
 
         for( lp2 = comms; lp2 != NULL; lp2 = lp2->next ) {
-	    gnc_gda_save_commodity( be, GNC_COMMODITY(lp2->data) );
+	    	gnc_gda_save_commodity( be, GNC_COMMODITY(lp2->data) );
         }
     }
 }
@@ -413,6 +431,9 @@
     GList* descendants;
     GList* node;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( root != NULL );
+
     descendants = gnc_account_get_descendants( root );
     for( node = descendants; node != NULL; node = g_list_next(node) ) {
         gnc_gda_save_account( be, QOF_INSTANCE(GNC_ACCOUNT(node->data)) );
@@ -423,6 +444,9 @@
 static void
 save_accounts( GncGdaBackend* be, QofBook* book )
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
     save_account_tree( be, gnc_book_get_root_account( book ) );
 }
 
@@ -431,12 +455,19 @@
 {
     GncGdaBackend* be = (GncGdaBackend*)data;
 
+	g_return_if_fail( data != NULL );
+	g_return_if_fail( ent != NULL );
+	g_return_if_fail( GNC_IS_BUDGET(ent) );
+
     gnc_gda_save_budget( be, ent );
 }
 
 static void
 save_budgets( GncGdaBackend* be, QofBook* book )
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
     qof_collection_foreach( qof_book_get_collection( book, GNC_ID_BUDGET ),
                             write_budget, be );
 }
@@ -446,6 +477,9 @@
 {
     GncGdaBackend* be = (GncGdaBackend*)data;
 
+	g_return_val_if_fail( p != NULL, FALSE );
+	g_return_val_if_fail( data != NULL, FALSE );
+
     gnc_gda_save_price( be, QOF_INSTANCE(p) );
 
     return TRUE;
@@ -454,8 +488,13 @@
 static void
 save_prices( GncGdaBackend* be, QofBook* book )
 {
-    GNCPriceDB* priceDB = gnc_book_get_pricedb( book );
+    GNCPriceDB* priceDB;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
+    priceDB = gnc_book_get_pricedb( book );
+
     gnc_pricedb_foreach_price( priceDB, save_price, be, TRUE );
 }
 
@@ -464,6 +503,9 @@
 {
     GncGdaBackend* be = (GncGdaBackend*)data;
 
+	g_return_val_if_fail( tx != NULL, 0 );
+	g_return_val_if_fail( data != NULL, 0 );
+
     gnc_gda_save_transaction( be, QOF_INSTANCE(tx) );
 
     return 0;
@@ -472,6 +514,9 @@
 static void
 save_transactions( GncGdaBackend* be, QofBook* book )
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+	
     xaccAccountTreeForEachTransaction( gnc_book_get_root_account( book ),
                                        save_tx,
                                        (gpointer)be );
@@ -482,6 +527,9 @@
 {
     Account* ra;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
     ra = gnc_book_get_template_root( book );
     if( gnc_account_n_descendants( ra ) > 0 ) {
         save_account_tree( be, ra );
@@ -495,6 +543,9 @@
     GList* schedXactions;
     SchedXaction* tmpSX;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
     schedXactions = gnc_book_get_schedxactions( book )->sx_list;
 
     for( ; schedXactions != NULL; schedXactions = schedXactions->next ) {
@@ -527,6 +578,9 @@
     gint numTables;
     gda_backend be_data;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( book != NULL );
+
     ENTER ("book=%p, primary=%p", book, fbe->primary_book);
 
     /* Destroy the current contents of the database */
@@ -592,11 +646,15 @@
 static void
 gnc_gda_begin_edit (QofBackend *be, QofInstance *inst)
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
 }
 
 static void
 gnc_gda_rollback_edit (QofBackend *be, QofInstance *inst)
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
 }
 
 static void
@@ -629,16 +687,17 @@
 	GError* error;
 	gboolean status;
 
-    ENTER( " " );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
 
     /* During initial load where objects are being created, don't commit
     anything */
-
     if( be->loading ) {
-		LEAVE( "" );
 	    return;
 	}
 
+    ENTER( " " );
+
     g_debug( "gda_commit_edit(): %s dirty = %d, do_free=%d\n",
              (inst->e_type ? inst->e_type : "(null)"),
              qof_instance_get_dirty_flag(inst), qof_instance_get_destroying(inst) );
@@ -711,12 +770,19 @@
 static void
 handle_and_term( QofQueryTerm* pTerm, gchar* sql )
 {
-    GSList* pParamPath = qof_query_term_get_param_path( pTerm );
-    QofQueryPredData* pPredData = qof_query_term_get_pred_data( pTerm );
-    gboolean isInverted = qof_query_term_is_inverted( pTerm );
+    GSList* pParamPath;
+    QofQueryPredData* pPredData;
+    gboolean isInverted;
     GSList* name;
     gchar val[GUID_ENCODING_LENGTH+1];
 
+	g_return_if_fail( pTerm != NULL );
+	g_return_if_fail( sql != NULL );
+
+    pParamPath = qof_query_term_get_param_path( pTerm );
+    pPredData = qof_query_term_get_pred_data( pTerm );
+    isInverted = qof_query_term_is_inverted( pTerm );
+
     strcat( sql, "(" );
     if( isInverted ) {
         strcat( sql, "!" );
@@ -803,7 +869,7 @@
 
 	// Is this the right item?
     if( strcmp( type, be_data->pQueryInfo->searchObj ) != 0 ) return;
-    g_return_if_fail( !be_data->ok );
+    if( be_data->ok ) return;
 
     if( pData->compile_query != NULL ) {
         be_data->pQueryInfo->pCompiledQuery = (pData->compile_query)(
@@ -823,6 +889,9 @@
     gda_backend be_data;
     gnc_gda_query_info* pQueryInfo;
 
+	g_return_val_if_fail( pBEnd != NULL, NULL );
+	g_return_val_if_fail( pQuery != NULL, NULL );
+
 	ENTER( " " );
 
     searchObj = qof_query_get_search_for( pQuery );
@@ -900,6 +969,9 @@
     gnc_gda_query_info* pQueryInfo = (gnc_gda_query_info*)pQuery;
     gda_backend be_data;
 
+	g_return_if_fail( pBEnd != NULL );
+	g_return_if_fail( pQuery != NULL );
+
 	ENTER( " " );
 
     // Try various objects first
@@ -947,6 +1019,8 @@
     gnc_gda_query_info* pQueryInfo = (gnc_gda_query_info*)pQuery;
     gda_backend be_data;
 
+	g_return_if_fail( pBEnd != NULL );
+	g_return_if_fail( pQuery != NULL );
     g_return_if_fail( !be->in_query );
 
 	ENTER( " " );
@@ -1050,8 +1124,10 @@
 }
 
 static void
-gnc_gda_provider_free (QofBackendProvider *prov)
+gnc_gda_provider_free( QofBackendProvider *prov )
 {
+	g_return_if_fail( prov != NULL );
+
     prov->provider_name = NULL;
     prov->access_method = NULL;
     g_free (prov);
@@ -1062,15 +1138,13 @@
  *
  */
 static gboolean
-gnc_gda_check_sqlite_file(const gchar *path)
+gnc_gda_check_sqlite_file( const gchar *path )
 {
 	FILE* f;
 	gchar buf[50];
 
 	// BAD if the path is null
-	if( path == NULL ) {
-		return FALSE;
-	}
+	g_return_val_if_fail( path != NULL, FALSE );
 
 	if( g_str_has_suffix( path, ".db" ) ) {
 		f = g_fopen( path, "r" );

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -63,6 +63,10 @@
     GdaQueryField* field;
     GdaQueryField* field_value;
 
+	g_return_if_fail( query != NULL );
+	g_return_if_fail( col_name != NULL );
+	g_return_if_fail( value != NULL );
+
     field = gda_query_field_field_new( query, col_name );
     gda_query_field_set_visible( field, TRUE );
 
@@ -84,6 +88,10 @@
     GdaQueryField* key;
     GdaQueryField* key_value;
 
+	g_return_val_if_fail( query != NULL, NULL );
+	g_return_val_if_fail( col_name != NULL, NULL );
+	g_return_val_if_fail( value != NULL, NULL );
+
     cond = gda_query_condition_new( query, GDA_QUERY_CONDITION_LEAF_EQUAL );
 
     key = gda_query_field_field_new( query, col_name );
@@ -122,6 +130,9 @@
 {
     QofAccessFunc getter;
 
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+
 	if( (table_row->flags & COL_AUTOINC) != 0 ) {
 		getter = get_autoinc_id;
     } else if( table_row->param_name != NULL ) {
@@ -137,19 +148,25 @@
 static void
 load_string( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     const gchar* s;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         s = NULL;
     } else {
         s = g_value_get_string( val );
     }
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, s, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, s, NULL );
     } else {
 		(*setter)( pObject, (const gpointer)s );
     }
@@ -162,6 +179,12 @@
     QofAccessFunc getter;
     gchar* s;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 	if( table_row->gobj_param_name != NULL ) {
 		g_object_get( pObject, table_row->gobj_param_name, &s, NULL );
@@ -181,6 +204,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_string( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -191,6 +220,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_string( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name,
                                             &value );
@@ -202,6 +237,11 @@
 {
     const gchar* dbms_type;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server,
                                                         cnn, G_TYPE_STRING );
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
@@ -216,19 +256,25 @@
 static void
 load_int( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     gint int_value;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         int_value = 0;
     } else {
         int_value = g_value_get_int( val );
     }
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, int_value, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
     } else {
     	(*setter)( pObject, GINT_TO_POINTER(int_value) );
     }
@@ -241,6 +287,12 @@
     gint int_value;
     QofAccessFunc getter;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
     getter = gnc_gda_get_getter( obj_name, table_row );
@@ -255,6 +307,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_int( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -265,6 +323,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_int( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -275,6 +339,11 @@
 {
     const gchar* dbms_type;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server,
                                                         cnn, G_TYPE_INT );
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
@@ -289,19 +358,25 @@
 static void
 load_boolean( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     gint int_value;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         int_value = 0;
     } else {
         int_value = g_value_get_int( val );
     }
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, int_value, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
     } else {
     	(*setter)( pObject, GINT_TO_POINTER(int_value) );
     }
@@ -314,6 +389,12 @@
     gint int_value;
     QofAccessFunc getter;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
     getter = gnc_gda_get_getter( obj_name, table_row );
@@ -328,6 +409,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_int( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -338,6 +425,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_int( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -348,6 +441,11 @@
 {
     const gchar* dbms_type;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server,
                                                         cnn, G_TYPE_INT );
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
@@ -362,12 +460,18 @@
 static void
 load_int64( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     gint64 i64_value;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         (*setter)( pObject, NULL );
     } else {    
@@ -384,6 +488,12 @@
     gint64 i64_value;
     QofAccessFunc getter;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
     getter = gnc_gda_get_getter( obj_name, table_row );
     pInt64 = (*getter)( pObject, NULL );
@@ -400,6 +510,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_int64( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -410,6 +526,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_int64( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -420,6 +542,11 @@
 {
     const gchar* dbms_type;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server,
                                                         cnn, G_TYPE_INT64 );
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
@@ -434,12 +561,18 @@
 static void
 load_double( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     gdouble d_value;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         (*setter)( pObject, (gpointer)NULL );
     } else {
@@ -456,6 +589,12 @@
     gdouble* pDouble;
     gdouble d_value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
     getter = gnc_gda_get_getter( obj_name, table_row );
@@ -473,6 +612,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_double( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -483,6 +628,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_double( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -493,6 +644,11 @@
 {
     const gchar* dbms_type;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server,
                                                         cnn, G_TYPE_INT64 );
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
@@ -507,21 +663,27 @@
 static void
 load_guid( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GUID guid;
     const GUID* pGuid;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         pGuid = NULL;
     } else {
         string_to_guid( g_value_get_string( val ), &guid );
         pGuid = &guid;
     }
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, pGuid, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, pGuid, NULL );
     } else {
 		(*setter)( pObject, (const gpointer)pGuid );
     }
@@ -535,6 +697,12 @@
     const GUID* guid;
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
 	if( table_row->gobj_param_name != NULL ) {
@@ -556,6 +724,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_guid( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -566,6 +740,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_guid( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -574,6 +754,11 @@
 create_guid_col( GdaServerProvider* server, GdaConnection* cnn,
             xmlNodePtr array_data, const col_cvt_t* table_row, gboolean pkey )
 {
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
                     "char", GUID_ENCODING_LENGTH, table_row->flags | (pkey ? COL_PKEY : 0) );
 }
@@ -592,6 +777,12 @@
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
 	QofInstance* inst;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
 	if( table_row->gobj_param_name != NULL ) {
@@ -616,6 +807,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_objectref_guid( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -626,6 +823,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_objectref_guid( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -634,6 +837,11 @@
 gnc_gda_create_objectref_guid_col( GdaServerProvider* server, GdaConnection* cnn,
             xmlNodePtr array_data, const col_cvt_t* table_row, gboolean pkey )
 {
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
                     "char", GUID_ENCODING_LENGTH, table_row->flags | (pkey ? COL_PKEY : 0) );
 }
@@ -644,13 +852,19 @@
 static void
 load_timespec( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GDate* date;
     Timespec ts;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         (*setter)( pObject, NULL );
     } else {
@@ -689,6 +903,12 @@
     gint y, m, d;
     gchar iso8601_buf[33];
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
     getter = (TimespecAccessFunc)gnc_gda_get_getter( obj_name, table_row );
@@ -708,6 +928,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_timespec( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -718,6 +944,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_timespec( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -728,6 +960,11 @@
 {
     const gchar* dbms_type;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server,
                                                         cnn, G_TYPE_DATE );
     gnc_gda_add_table_column( server, cnn, array_data, table_row->col_name,
@@ -741,12 +978,18 @@
 static void
 load_date( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GDate* date;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
 		date = g_date_new_dmy( 1, 1, 1970 );
         (*setter)( pObject, date );
@@ -781,6 +1024,12 @@
     GDate* date;
     QofAccessFunc getter;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
     getter = gnc_gda_get_getter( obj_name, table_row );
@@ -797,6 +1046,12 @@
 {
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     get_gvalue_date( be, obj_name, pObject, table_row, &value );
     gnc_gda_add_field_to_query( query, table_row->col_name, &value );
 }
@@ -807,6 +1062,12 @@
 {
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     get_gvalue_date( be, obj_name, pObject, table_row, &value );
     return gnc_gda_create_condition_from_field( query, table_row->col_name, &value );
 }
@@ -818,6 +1079,8 @@
 static gint64
 get_integer_value( const GValue* value )
 {
+	g_return_val_if_fail( value != NULL, 0 );
+
 	if( G_VALUE_HOLDS_INT(value) ) {
 		return g_value_get_int( value );
 	} else if( G_VALUE_HOLDS_UINT(value) ) {
@@ -843,7 +1106,7 @@
 static void
 load_numeric( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     gchar* buf;
@@ -852,7 +1115,13 @@
     gboolean isNull = FALSE;
 	NumericSetterFunc n_setter = (NumericSetterFunc)setter;
 
-    buf = g_strdup_printf( "%s_num", table->col_name );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    buf = g_strdup_printf( "%s_num", table_row->col_name );
     val = gda_data_model_get_value_at_col_name( pModel, buf, row );
     g_free( buf );
     if( gda_value_is_null( val ) ) {
@@ -861,7 +1130,7 @@
     } else {
         num = get_integer_value( val );
     }
-    buf = g_strdup_printf( "%s_denom", table->col_name );
+    buf = g_strdup_printf( "%s_denom", table_row->col_name );
     val = gda_data_model_get_value_at_col_name( pModel, buf, row );
     g_free( buf );
     if( gda_value_is_null( val ) ) {
@@ -883,6 +1152,12 @@
     NumericGetterFunc getter;
     gnc_numeric n;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( value != NULL );
+
     memset( value, 0, sizeof( GValue ) );
 
     getter = (NumericGetterFunc)gnc_gda_get_getter( obj_name, table_row );
@@ -901,6 +1176,12 @@
     gnc_numeric* n;
     gchar* s;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     memset( &value, 0, sizeof( GValue ) );
     memset( &num_value, 0, sizeof( GValue ) );
     memset( &denom_value, 0, sizeof( GValue ) );
@@ -935,6 +1216,12 @@
     GdaQueryCondition* denom_cond;
     GdaQueryCondition* cond;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table_row != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     memset( &value, 0, sizeof( GValue ) );
     memset( &num_value, 0, sizeof( GValue ) );
     memset( &denom_value, 0, sizeof( GValue ) );
@@ -969,6 +1256,11 @@
     const gchar* dbms_type;
     gchar* buf;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( table_row != NULL );
+
     dbms_type = gda_server_provider_get_default_dbms_type( server, cnn,
                                                             G_TYPE_INT64 );
     buf = g_strdup_printf( "%s_num", table_row->col_name );
@@ -991,6 +1283,9 @@
 void
 gnc_gda_register_col_type_handler( const gchar* colType, const col_type_handler_t* handler )
 {
+	g_return_if_fail( colType != NULL );
+	g_return_if_fail( handler != NULL );
+
 	if( g_columnTypeHash == NULL ) {
 		g_columnTypeHash = g_hash_table_new( g_str_hash, g_str_equal );
 	}
@@ -1003,6 +1298,8 @@
 {
     col_type_handler_t* pHandler;
 
+	g_return_val_if_fail( pHandler != NULL, NULL );
+
 	pHandler = g_hash_table_lookup( g_columnTypeHash, col_type );
 	if( pHandler == NULL ) {
         g_assert( FALSE );
@@ -1033,6 +1330,9 @@
     GUID* pGuid = (GUID*)pObject;
     GUID* guid = (GUID*)pValue;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
 	memcpy( pGuid, guid, sizeof( GUID ) );
 }
 
@@ -1049,6 +1349,10 @@
 {
 	static GUID guid;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( pModel != NULL, NULL );
+	g_return_val_if_fail( row >= 0, NULL );
+
     gnc_gda_load_object( be, pModel, row, NULL, &guid, guid_table );
 
     return &guid;
@@ -1066,6 +1370,10 @@
 {
     static GUID guid;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( pModel != NULL, NULL );
+	g_return_val_if_fail( row >= 0, NULL );
+
     gnc_gda_load_object( be, pModel, row, NULL, &guid, tx_guid_table );
 
     return &guid;
@@ -1074,23 +1382,30 @@
 void
 gnc_gda_load_object( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
                     QofIdTypeConst obj_name, gpointer pObject,
-                    const col_cvt_t* table )
+                    const col_cvt_t* table_row )
 {
     int col;
     QofSetterFunc setter;
     col_type_handler_t* pHandler;
 
-    for( col = 0; table[col].col_name != NULL; col++ ) {
-		if( (table[col].flags & COL_AUTOINC) != 0 ) {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    for( col = 0; table_row[col].col_name != NULL; col++ ) {
+		if( (table_row[col].flags & COL_AUTOINC) != 0 ) {
 			setter = set_autoinc_id;
-        } else if( table[col].param_name != NULL ) {
+        } else if( table_row[col].param_name != NULL ) {
             setter = qof_class_get_parameter_setter( obj_name,
-                                                    table[col].param_name );
+                                                    table_row[col].param_name );
         } else {
-            setter = table[col].setter;
+            setter = table_row[col].setter;
         }
-        pHandler = get_handler( table[col].col_type );
-        pHandler->load_fn( be, pModel, row, setter, pObject, &table[col] );
+        pHandler = get_handler( table_row[col].col_type );
+        pHandler->load_fn( be, pModel, row, setter, pObject, &table_row[col] );
     }
 }
 
@@ -1102,6 +1417,9 @@
     GdaQueryTarget* target;
     GdaQueryField* allFields;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( table_name != NULL, NULL );
+
     /* SELECT */
     query = gda_query_new( be->pDict );
     gda_query_set_query_type( query, GDA_QUERY_TYPE_SELECT );
@@ -1125,9 +1443,11 @@
 gnc_gda_execute_query( const GncGdaBackend* be, GdaQuery* query )
 {
     GError* error = NULL;
-
     GdaObject* ret;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( query != NULL, NULL );
+
     ret = gda_query_execute( query, NULL, FALSE, &error );
 
     if( error != NULL ) {
@@ -1141,9 +1461,11 @@
 gnc_gda_create_query_from_sql( const GncGdaBackend* be, const gchar* sql )
 {
     GError* error = NULL;
-
     GdaQuery* query;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( sql != NULL, NULL );
+
     query = gda_query_new_from_sql( be->pDict, sql, &error );
     if( query == NULL ) {
         g_critical( "SQL error: %s\n", error->message );
@@ -1157,6 +1479,9 @@
 {
 	GdaQuery* query;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( sql != NULL, NULL );
+
 	query = gnc_gda_create_query_from_sql( be, sql );
 	if( query != NULL ) {
 	    return gnc_gda_execute_query( be, query );
@@ -1170,9 +1495,11 @@
 {
     GError* error = NULL;
     int count = 0;
-
     GdaObject* ret;
 
+	g_return_val_if_fail( be != NULL, 0 );
+	g_return_val_if_fail( sql != NULL, 0 );
+
     ret = gnc_gda_execute_sql( be, sql );
     if( GDA_IS_DATA_MODEL(ret) ) {
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
@@ -1190,9 +1517,11 @@
 gnc_gda_execute_query_get_count( const GncGdaBackend* be, GdaQuery* query )
 {
     int count = 0;
-
     GdaObject* ret;
 
+	g_return_val_if_fail( be != NULL, 0 );
+	g_return_val_if_fail( query != NULL, 0 );
+
     ret = gnc_gda_execute_query( be, query );
     if( GDA_IS_DATA_MODEL(ret) ) {
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
@@ -1209,6 +1538,12 @@
 {
     col_type_handler_t* pHandler;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     pHandler = get_handler( table_row->col_type );
     pHandler->get_gvalue_query_fn( be, obj_name, pObject, table_row, query );
 }
@@ -1221,6 +1556,12 @@
     col_type_handler_t* pHandler;
     GdaQueryCondition* cond;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( obj_name != NULL );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+	g_return_if_fail( query != NULL );
+
     pHandler = get_handler( table_row->col_type );
     cond = pHandler->get_gvalue_cond_fn( be, obj_name, pObject, table_row, query );
 
@@ -1236,6 +1577,12 @@
     GdaQuery* query;
     int count;
 
+	g_return_val_if_fail( be != NULL, FALSE );
+	g_return_val_if_fail( table_name != NULL, FALSE );
+	g_return_val_if_fail( obj_name != NULL, FALSE );
+	g_return_val_if_fail( pObject != NULL, FALSE );
+	g_return_val_if_fail( table != NULL, FALSE );
+
     /* SELECT * FROM */
     query = gnc_gda_create_select_query( be, table_name );
 
@@ -1259,6 +1606,12 @@
 {
     GdaQuery* pQuery;
 
+	g_return_val_if_fail( be != NULL, FALSE );
+	g_return_val_if_fail( table_name != NULL, FALSE );
+	g_return_val_if_fail( obj_name != NULL, FALSE );
+	g_return_val_if_fail( pObject != NULL, FALSE );
+	g_return_val_if_fail( table != NULL, FALSE );
+
     if( op == OP_DB_ADD_OR_UPDATE ) {
         if( gnc_gda_object_is_it_in_db( be, table_name, obj_name, pObject, table ) ) {
             pQuery = gnc_gda_build_update_query( be, table_name, obj_name, pObject, table );
@@ -1292,9 +1645,15 @@
 {
     GdaQuery* query;
     int col;
-
     GdaQueryTarget* target;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( table_name != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table != NULL, NULL );
+
+
     /* INSERT */
     query = gda_query_new( be->pDict );
     gda_query_set_query_type( query, GDA_QUERY_TYPE_INSERT );
@@ -1321,9 +1680,14 @@
 {
     GdaQuery* query;
     int col;
-
     GdaQueryTarget* target;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( table_name != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table != NULL, NULL );
+
     /* UPDATE */
     query = gda_query_new( be->pDict );
     gda_query_set_query_type( query, GDA_QUERY_TYPE_UPDATE );
@@ -1350,6 +1714,12 @@
     GdaQuery* query;
     GdaQueryTarget* target;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( table_name != NULL, NULL );
+	g_return_val_if_fail( obj_name != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( table != NULL, NULL );
+
     /* DELETE */
     query = gda_query_new( be->pDict );
     gda_query_set_query_type( query, GDA_QUERY_TYPE_DELETE );
@@ -1374,6 +1744,12 @@
     xmlNodePtr array_row, array_value;
     gchar* buf;
 
+	g_return_if_fail( server != NULL );
+	g_return_if_fail( cnn != NULL );
+	g_return_if_fail( array_data != NULL );
+	g_return_if_fail( arg != NULL );
+	g_return_if_fail( dbms_type != NULL );
+
     array_row = xmlNewChild( array_data, NULL, "gda_array_row", NULL );
     array_value = xmlNewChild( array_row, NULL, "gda_array_value", arg );
     xmlSetProp( array_value, "colid", "COLUMN_NAME" );
@@ -1410,8 +1786,12 @@
     GdaServerOperation *op;
     GdaServerProvider *server;
     
+	g_return_val_if_fail( cnn != NULL, FALSE );
     g_return_val_if_fail( GDA_IS_CONNECTION(cnn), FALSE );
     g_return_val_if_fail( gda_connection_is_opened(cnn), FALSE );
+	g_return_val_if_fail( table_name != NULL, FALSE );
+	g_return_val_if_fail( col_table != NULL, FALSE );
+	g_return_val_if_fail( error != NULL, FALSE );
     
     server = gda_connection_get_provider_obj( cnn );
     
@@ -1491,6 +1871,10 @@
     GError* error = NULL;
     GdaDictDatabase* db;
     
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( table_name != NULL );
+	g_return_if_fail( col_table != NULL );
+
     db = gda_dict_get_database( be->pDict );
     table = gda_dict_database_get_table_by_name( db, table_name );
     if( !GDA_IS_DICT_TABLE(table) ) {

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-book-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-book-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-book-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -65,8 +65,12 @@
 get_root_account_guid( gpointer pObject, const QofParam* param )
 {
     GNCBook* book = QOF_BOOK(pObject);
-    const Account* root = gnc_book_get_root_account( book );
+    const Account* root;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( QOF_IS_BOOK(pObject), NULL );
+
+    root = gnc_book_get_root_account( book );
     return (gpointer)qof_instance_get_guid( QOF_INSTANCE(root) );
 }
 
@@ -74,9 +78,14 @@
 set_root_account_guid( gpointer pObject, gpointer pValue )
 {
     GNCBook* book = QOF_BOOK(pObject);
-    const Account* root = gnc_book_get_root_account( book );
+    const Account* root;
     GUID* guid = (GUID*)pValue;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( QOF_IS_BOOK(pObject) );
+	g_return_if_fail( pValue != NULL );
+
+    root = gnc_book_get_root_account( book );
     qof_instance_set_guid( QOF_INSTANCE(root), guid );
 }
 
@@ -84,8 +93,12 @@
 get_root_template_guid( gpointer pObject, const QofParam* param )
 {
     const GNCBook* book = QOF_BOOK(pObject);
-    const Account* root = gnc_book_get_template_root( book );
+    const Account* root;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( QOF_IS_BOOK(pObject), NULL );
+
+    root = gnc_book_get_template_root( book );
     return (gpointer)qof_instance_get_guid( QOF_INSTANCE(root) );
 }
 
@@ -94,8 +107,13 @@
 {
     GNCBook* book = QOF_BOOK(pObject);
     GUID* guid = (GUID*)pValue;
-    Account* root = gnc_book_get_template_root( book );
+    Account* root;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( QOF_IS_BOOK(pObject) );
+	g_return_if_fail( pValue != NULL );
+
+    root = gnc_book_get_template_root( book );
     if( root == NULL ) {
         root = xaccMallocAccount( book );
         xaccAccountBeginEdit( root );
@@ -107,13 +125,17 @@
 }
 
 /* ================================================================= */
-static GNCBook*
+static void
 load_single_book( GncGdaBackend* be, GdaDataModel* pModel, int row )
 {
     const GUID* guid;
     GUID book_guid;
 	GNCBook* pBook;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+
     guid = gnc_gda_load_guid( be, pModel, row );
     book_guid = *guid;
 
@@ -127,8 +149,6 @@
                             qof_instance_get_slots( QOF_INSTANCE(pBook) ) );
 
     qof_instance_mark_clean( QOF_INSTANCE(pBook) );
-
-    return pBook;
 }
 
 static void
@@ -136,8 +156,9 @@
 {
     static GdaQuery* query;
     GdaObject* ret;
-    QofBook* pBook = be->primary_book;
 
+	g_return_if_fail( be != NULL );
+
     if( query == NULL ) {
         query = gnc_gda_create_select_query( be, BOOK_TABLE );
     }
@@ -151,7 +172,7 @@
    	    	gnc_gda_save_book( be, QOF_INSTANCE(be->primary_book) );
 		} else {
 			// Otherwise, load the 1st book.
-            (void)load_single_book( be, pModel, 0 );
+            load_single_book( be, pModel, 0 );
 		}
     }
 }
@@ -160,6 +181,8 @@
 static void
 create_book_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, BOOK_TABLE, col_table );
 }
 
@@ -167,13 +190,16 @@
 void
 gnc_gda_save_book( GncGdaBackend* be, QofInstance* inst )
 {
-    GNCBook* pBook = QOF_BOOK(inst);
     const GUID* guid;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( QOF_IS_BOOK(inst) );
+
     (void)gnc_gda_do_db_operation( be,
                         qof_instance_get_destroying(inst) ? OP_DB_DELETE : OP_DB_ADD_OR_UPDATE,
                         BOOK_TABLE,
-                        GNC_ID_BOOK, pBook,
+                        GNC_ID_BOOK, inst,
                         col_table );
 
     // Delete old slot info

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-budget-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -60,7 +60,7 @@
 };
 
 /* ================================================================= */
-static GncBudget*
+static void
 load_single_budget( GncGdaBackend* be, GdaDataModel* pModel, int row )
 {
     const GUID* guid;
@@ -68,6 +68,10 @@
 	GncBudget* pBudget;
 	Recurrence* r;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+
     guid = gnc_gda_load_guid( be, pModel, row );
     budget_guid = *guid;
 
@@ -83,8 +87,6 @@
                             qof_instance_get_slots( QOF_INSTANCE(pBudget) ) );
 
     qof_instance_mark_clean( QOF_INSTANCE(pBudget) );
-
-    return pBudget;
 }
 
 static void
@@ -92,8 +94,9 @@
 {
     static GdaQuery* query;
     GdaObject* ret;
-    QofBook* pBook = be->primary_book;
 
+	g_return_if_fail( be != NULL );
+
     if( query == NULL ) {
         query = gnc_gda_create_select_query( be, BUDGET_TABLE );
     }
@@ -104,7 +107,7 @@
         int r;
 
         for( r = 0; r < numRows; r++ ) {
-            (void)load_single_budget( be, pModel, r );
+            load_single_budget( be, pModel, r );
         }
     }
 }
@@ -113,6 +116,8 @@
 static void
 create_budget_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, BUDGET_TABLE, col_table );
 }
 
@@ -123,6 +128,10 @@
     GncBudget* pBudget = GNC_BUDGET(inst);
     const GUID* guid;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_BUDGET(inst) );
+
     (void)gnc_gda_do_db_operation( be,
                         qof_instance_get_destroying(inst) ? OP_DB_DELETE : OP_DB_ADD_OR_UPDATE,
                         BUDGET_TABLE,

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-commodity-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-commodity-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-commodity-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -91,6 +91,9 @@
 {
     const gnc_commodity* pCommodity = GNC_COMMODITY(pObject);
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_COMMODITY(pObject), NULL );
+
     return (gpointer)gnc_quote_source_get_internal_name(
                             gnc_commodity_get_quote_source(pCommodity));
 }
@@ -102,6 +105,10 @@
     const gchar* quote_source_name = (const gchar*)pValue;
     gnc_quote_source* quote_source;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_COMMODITY(pObject) );
+	g_return_if_fail( pValue != NULL );
+
     quote_source = gnc_quote_source_lookup_by_internal( quote_source_name );
     gnc_commodity_set_quote_source( pCommodity, quote_source );
 }
@@ -161,6 +168,8 @@
 static void
 create_commodities_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, COMMODITIES_TABLE, col_table );
 }
 
@@ -170,10 +179,14 @@
 {
     const GUID* guid;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_COMMODITY(inst) );
+
     (void)gnc_gda_do_db_operation( be,
                         (qof_instance_get_destroying(inst) ? OP_DB_DELETE : OP_DB_ADD_OR_UPDATE ),
                         COMMODITIES_TABLE,
-                        GNC_ID_COMMODITY, (gnc_commodity*)inst,
+                        GNC_ID_COMMODITY, inst,
                         col_table );
 
     // Delete old slot info
@@ -190,6 +203,9 @@
 static gboolean
 is_commodity_in_db( GncGdaBackend* be, gnc_commodity* pCommodity )
 {
+	g_return_val_if_fail( be != NULL, FALSE );
+	g_return_val_if_fail( pCommodity != NULL, FALSE );
+
     return gnc_gda_object_is_it_in_db( be, COMMODITIES_TABLE, GNC_ID_COMMODITY,
                                 pCommodity, col_table );
 }
@@ -197,6 +213,9 @@
 void
 gnc_gda_save_commodity( GncGdaBackend* be, gnc_commodity* pCommodity )
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pCommodity != NULL );
+
     if( !is_commodity_in_db( be, pCommodity ) ) {
         commit_commodity( be, QOF_INSTANCE(pCommodity) );
     }
@@ -207,14 +226,20 @@
 static void
 load_commodity_guid( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GUID guid;
     const GUID* pGuid;
 	gnc_commodity* commodity = NULL;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         pGuid = NULL;
     } else {
@@ -224,8 +249,8 @@
 	if( pGuid != NULL ) {
 		commodity = gnc_commodity_find_commodity_by_guid( pGuid, be->primary_book );
 	}
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, commodity, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, commodity, NULL );
     } else {
 		(*setter)( pObject, (const gpointer)commodity );
     }

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -45,14 +45,13 @@
 
 static gpointer get_lot_account( gpointer pObject, const QofParam* param );
 static void set_lot_account( gpointer pObject, gpointer pValue );
-static gpointer get_lot_is_closed( gpointer pObject, const QofParam* param );
 static void set_lot_is_closed( gpointer pObject, gpointer pValue );
 
 static col_cvt_t col_table[] =
 {
-    { "guid",         CT_GUID,   0, COL_NNUL, "guid" },
-    { "account_guid", CT_GUID,   0, COL_NNUL, NULL, NULL, get_lot_account,   set_lot_account },
-    { "is_closed",    CT_STRING, 1, COL_NNUL, NULL, NULL, get_lot_is_closed, set_lot_is_closed },
+    { "guid",         CT_GUID,    0, COL_NNUL, "guid" },
+    { "account_guid", CT_GUID,    0, COL_NNUL, NULL, NULL, get_lot_account,   set_lot_account },
+    { "is_closed",    CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, (QofAccessFunc)gnc_lot_is_closed, set_lot_is_closed },
     { NULL }
 };
 
@@ -61,8 +60,12 @@
 get_lot_account( gpointer pObject, const QofParam* param )
 {
     const GNCLot* lot = GNC_LOT(pObject);
-    const Account* pAccount = gnc_lot_get_account( lot );
+    const Account* pAccount;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_LOT(pObject), NULL );
+
+    pAccount = gnc_lot_get_account( lot );
     return (gpointer)qof_instance_get_guid( QOF_INSTANCE(pAccount) );
 }
 
@@ -70,37 +73,40 @@
 set_lot_account( gpointer pObject, gpointer pValue )
 {
     GNCLot* lot = GNC_LOT(pObject);
-    QofBook* pBook = qof_instance_get_book( QOF_INSTANCE(lot) );
+    QofBook* pBook;
     GUID* guid = (GUID*)pValue;
-    Account* pAccount = xaccAccountLookup( guid, pBook );
+    Account* pAccount;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_LOT(pObject) );
+	g_return_if_fail( pValue != NULL );
+
+    pBook = qof_instance_get_book( QOF_INSTANCE(lot) );
+    pAccount = xaccAccountLookup( guid, pBook );
     xaccAccountInsertLot( pAccount, lot );
 }
 
-static gpointer
-get_lot_is_closed( gpointer pObject, const QofParam* param )
-{
-    GNCLot* lot = GNC_LOT(pObject);
-    static gboolean is_closed; 
-
-    is_closed = gnc_lot_is_closed( lot );
-    return &is_closed;
-}
-
 static void
 set_lot_is_closed( gpointer pObject, gpointer pValue )
 {
     GNCLot* lot = GNC_LOT(pObject);
-    const gboolean* pBoolean = (const gboolean*)pValue;
+    gboolean closed = GPOINTER_TO_INT(pValue);
 
-    lot->is_closed = *pBoolean;
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_LOT(pObject) );
+
+    lot->is_closed = closed;
 }
 
-static GNCLot*
+static void
 load_single_lot( GncGdaBackend* be, GdaDataModel* pModel, int row )
 {
 	GNCLot* lot;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+
     lot = gnc_lot_new( be->primary_book );
 
     gnc_gda_load_object( be, pModel, row, GNC_ID_LOT, lot, col_table );
@@ -108,8 +114,6 @@
                             qof_instance_get_slots( QOF_INSTANCE(lot) ) );
 
     qof_instance_mark_clean( QOF_INSTANCE(lot) );
-
-    return lot;
 }
 
 static void
@@ -118,6 +122,8 @@
     static GdaQuery* query;
     GdaObject* ret;
 
+	g_return_if_fail( be != NULL );
+
     if( query == NULL ) {
         query = gnc_gda_create_select_query( be, TABLE_NAME );
     }
@@ -126,10 +132,9 @@
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
         int numRows = gda_data_model_get_n_rows( pModel );
         int r;
-        GNCLot* lot;
 
         for( r = 0; r < numRows; r++ ) {
-            lot = load_single_lot( be, pModel, r );
+            load_single_lot( be, pModel, r );
         }
     }
 }
@@ -138,6 +143,8 @@
 static void
 create_lots_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, TABLE_NAME, col_table );
 }
 
@@ -146,12 +153,14 @@
 static void
 commit_lot( GncGdaBackend* be, QofInstance* inst )
 {
-    GNCLot* lot = GNC_LOT(inst);
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_LOT(inst) );
 
     (void)gnc_gda_do_db_operation( be,
                         (qof_instance_get_destroying(inst) ? OP_DB_DELETE : OP_DB_ADD_OR_UPDATE ),
                         TABLE_NAME,
-                        GNC_ID_LOT, lot,
+                        GNC_ID_LOT, inst,
                         col_table );
 
     // Now, commit any slots
@@ -163,14 +172,20 @@
 static void
 load_lot_guid( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GUID guid;
     const GUID* pGuid;
 	GNCLot* lot = NULL;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         pGuid = NULL;
     } else {
@@ -180,8 +195,8 @@
 	if( pGuid != NULL ) {
 		lot = gnc_lot_lookup( pGuid, be->primary_book );
 	}
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, lot, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, lot, NULL );
     } else {
 		(*setter)( pObject, (const gpointer)lot );
     }

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-price-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -65,6 +65,10 @@
 {
 	GNCPrice* pPrice;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( pModel != NULL, NULL );
+	g_return_val_if_fail( row >= 0, NULL );
+
     pPrice = gnc_price_create( be->primary_book );
 
     gnc_gda_load_object( be, pModel, row, GNC_ID_PRICE, pPrice, col_table );
@@ -79,9 +83,13 @@
 {
     static GdaQuery* query;
     GdaObject* ret;
-    QofBook* pBook = be->primary_book;
-    GNCPriceDB* pPriceDB = gnc_book_get_pricedb( pBook );
+    QofBook* pBook;
+    GNCPriceDB* pPriceDB;
 
+	g_return_if_fail( be != NULL );
+
+    pBook = be->primary_book;
+    pPriceDB = gnc_book_get_pricedb( pBook );
     if( query == NULL ) {
         query = gnc_gda_create_select_query( be, TABLE_NAME );
     }
@@ -106,6 +114,8 @@
 static void
 create_prices_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, TABLE_NAME, col_table );
 }
 
@@ -116,6 +126,10 @@
 {
     GNCPrice* pPrice = GNC_PRICE(inst);
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_PRICE(inst) );
+
     /* Ensure commodity and currency are in the db */
     gnc_gda_save_commodity( be, gnc_price_get_commodity( pPrice ) );
     gnc_gda_save_commodity( be, gnc_price_get_currency( pPrice ) );

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -89,6 +89,8 @@
 {
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     return (gpointer)pInfo->guid;
 }
 
@@ -104,8 +106,10 @@
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
     static guint m;
 	
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( pInfo->pRecurrence != NULL, NULL );
+
 	m = pInfo->pRecurrence->mult;
-
     return GUINT_TO_POINTER(m);
 }
 
@@ -115,6 +119,9 @@
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
     guint m = GPOINTER_TO_UINT(pValue);
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pInfo->pRecurrence != NULL );
+
     pInfo->pRecurrence->mult = m;
 }
 
@@ -123,6 +130,9 @@
 {
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( pInfo->pRecurrence != NULL, NULL );
+
     return (gpointer)recurrencePeriodTypeToString(
                             recurrenceGetPeriodType( pInfo->pRecurrence ) );
 }
@@ -132,6 +142,10 @@
 {
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pInfo->pRecurrence != NULL );
+	g_return_if_fail( pValue != NULL );
+
     pInfo->pRecurrence->ptype = recurrencePeriodTypeFromString( (gchar*)pValue );
 }
 
@@ -141,6 +155,9 @@
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
     static GDate date;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( pInfo->pRecurrence != NULL, NULL );
+
     date = recurrenceGetDate( pInfo->pRecurrence );
     return (gpointer)&date;
 }
@@ -151,6 +168,10 @@
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
     GDate* date = (GDate*)pValue;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pInfo->pRecurrence != NULL );
+	g_return_if_fail( pValue != NULL );
+
     pInfo->pRecurrence->start = *date;
 }
 
@@ -161,6 +182,10 @@
 {
     recurrence_info_t recurrence_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+	g_return_if_fail( r != NULL );
+
 	gnc_gda_recurrence_delete( be, guid );
 
     recurrence_info.be = be;
@@ -176,6 +201,9 @@
     recurrence_info_t recurrence_info;
 	GList* l;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+
 	gnc_gda_recurrence_delete( be, guid );
 
     recurrence_info.be = be;
@@ -192,6 +220,9 @@
 {
     recurrence_info_t recurrence_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+
     recurrence_info.be = be;
     recurrence_info.guid = guid;
     (void)gnc_gda_do_db_operation( be, OP_DB_DELETE, TABLE_NAME,
@@ -203,6 +234,11 @@
 {
     recurrence_info_t recurrence_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( r != NULL );
+
     recurrence_info.be = be;
 	recurrence_info.pRecurrence = r;
 
@@ -216,12 +252,14 @@
     GdaObject* ret;
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
     gchar* field_name;
-
     static GdaQuery* query = NULL;
     GdaQueryCondition* cond;
     GdaQueryField* key_value;
     GValue value;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( guid != NULL, NULL );
+
     guid_to_string_buff( guid, guid_buf );
 
     /* First time, create the query */
@@ -273,6 +311,10 @@
 {
 	GdaObject* ret;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+	g_return_if_fail( pRecurrence != NULL );
+
 	ret = gnc_gda_set_recurrences_from_db( be, guid );
     if( GDA_IS_DATA_MODEL( ret ) ) {
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
@@ -294,6 +336,10 @@
 {
 	GdaObject* ret;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+	g_return_if_fail( pSchedule != NULL );
+
 	ret = gnc_gda_set_recurrences_from_db( be, guid );
     if( GDA_IS_DATA_MODEL( ret ) ) {
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
@@ -312,6 +358,8 @@
 static void
 create_recurrence_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, TABLE_NAME, col_table );
 }
 

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -86,6 +86,9 @@
     gboolean autoCreate;
     gboolean autoNotify;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_SX(pObject), NULL );
+
     xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
     return GINT_TO_POINTER(autoCreate);
 }
@@ -97,6 +100,9 @@
     gboolean autoCreate;
     gboolean autoNotify;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_SX(pObject) );
+
     xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
     autoCreate = GPOINTER_TO_INT(pValue);
     xaccSchedXactionSetAutoCreate( pSx, autoCreate, autoNotify );
@@ -109,6 +115,9 @@
     gboolean autoCreate;
     gboolean autoNotify;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_SX(pObject), NULL );
+
     xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
     return GINT_TO_POINTER(autoNotify);
 }
@@ -120,6 +129,9 @@
     gboolean autoCreate;
     gboolean autoNotify;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_SX(pObject) );
+
     xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
     autoNotify = GPOINTER_TO_INT(pValue);
     xaccSchedXactionSetAutoCreate( pSx, autoCreate, autoNotify );
@@ -130,6 +142,9 @@
 {
     const SchedXaction* pSx = GNC_SX(pObject);
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_SX(pObject), NULL );
+
     return (gpointer)xaccAccountGetGUID( pSx->template_acct );
 }
 
@@ -137,10 +152,15 @@
 set_template_act_guid( gpointer pObject, gpointer pValue )
 {
     SchedXaction* pSx = GNC_SX(pObject);
-    QofBook* pBook = qof_instance_get_book( QOF_INSTANCE(pSx) );
+    QofBook* pBook;
     GUID* guid = (GUID*)pValue;
 	Account* pAcct;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_SX(pObject) );
+	g_return_if_fail( pValue != NULL );
+
+    pBook = qof_instance_get_book( QOF_INSTANCE(pSx) );
 	pAcct = xaccAccountLookup( guid, pBook );
 	sx_set_template_account( pSx, pAcct );
 }
@@ -154,6 +174,10 @@
 	SchedXaction* pSx;
 	GList* schedule = NULL;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( pModel != NULL, NULL );
+	g_return_val_if_fail( row >= 0, NULL );
+
     guid = gnc_gda_load_guid( be, pModel, row );
     sx_guid = *guid;
 
@@ -175,8 +199,9 @@
 {
     static GdaQuery* query;
     GdaObject* ret;
-    QofBook* pBook = be->primary_book;
 
+	g_return_if_fail( be != NULL );
+
     if( query == NULL ) {
         query = gnc_gda_create_select_query( be, SCHEDXACTION_TABLE );
     }
@@ -192,7 +217,9 @@
             SchedXaction* sx;
 			
 			sx = load_single_sx( be, pModel, r );
-		    gnc_sxes_add_sx(sxes, sx);
+			if( sx != NULL ) {
+		    	gnc_sxes_add_sx(sxes, sx);
+			}
         }
     }
 }
@@ -201,6 +228,8 @@
 static void
 create_sx_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, SCHEDXACTION_TABLE, col_table );
 }
 
@@ -211,6 +240,10 @@
     SchedXaction* pSx = GNC_SX(inst);
     const GUID* guid;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_SX(inst) );
+
     (void)gnc_gda_do_db_operation( be,
                         (qof_instance_get_destroying(inst) ? OP_DB_DELETE : OP_DB_ADD_OR_UPDATE ),
                         SCHEDXACTION_TABLE,

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -105,6 +105,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     return (gpointer)pInfo->guid;
 }
 
@@ -119,6 +121,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     return (gpointer)pInfo->path->str;
 }
 
@@ -127,6 +131,9 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
     pInfo->path = g_string_new( (gchar*)pValue );
 }
 
@@ -135,6 +142,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     return (gpointer)kvp_value_get_type( pInfo->pKvpValue );
 }
 
@@ -143,6 +152,9 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
     pInfo->value_type = (KvpValueType)pValue;
 }
 
@@ -152,6 +164,8 @@
     slot_info_t* pInfo = (slot_info_t*)pObject;
     static gint64 i64_val;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     if( kvp_value_get_type( pInfo->pKvpValue ) == KVP_TYPE_GINT64 ) {
         i64_val = kvp_value_get_gint64( pInfo->pKvpValue );
         return &i64_val;
@@ -165,6 +179,9 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
     if( pInfo->value_type == KVP_TYPE_GINT64 ) {
         kvp_frame_set_gint64( pInfo->pKvpFrame, pInfo->path->str, *(gint64*)pValue );
     }
@@ -175,6 +192,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     if( kvp_value_get_type( pInfo->pKvpValue ) == KVP_TYPE_STRING ) {
         return (gpointer)kvp_value_get_string( pInfo->pKvpValue );
     } else {
@@ -187,6 +206,9 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
     if( pInfo->value_type == KVP_TYPE_STRING ) {
         kvp_frame_set_string( pInfo->pKvpFrame, pInfo->path->str, (const gchar*)pValue );
     }
@@ -198,6 +220,8 @@
     slot_info_t* pInfo = (slot_info_t*)pObject;
     static double d_val;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     if( kvp_value_get_type( pInfo->pKvpValue ) == KVP_TYPE_DOUBLE ) {
         d_val = kvp_value_get_double( pInfo->pKvpValue );
         return (gpointer)&d_val;
@@ -211,6 +235,9 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
     if( pInfo->value_type == KVP_TYPE_DOUBLE ) {
         kvp_frame_set_double( pInfo->pKvpFrame, pInfo->path->str, *(double*)pValue );
     }
@@ -221,6 +248,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, gnc_dmy2timespec( 1, 1, 1970 ) );
+
 //if( kvp_value_get_type( pInfo->pKvpValue ) == KVP_TYPE_TIMESPEC ) {
     return kvp_value_get_timespec( pInfo->pKvpValue );
 }
@@ -230,6 +259,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+
     if( pInfo->value_type == KVP_TYPE_TIMESPEC ) {
         kvp_frame_set_timespec( pInfo->pKvpFrame, pInfo->path->str, ts );
     }
@@ -240,6 +271,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+
     if( kvp_value_get_type( pInfo->pKvpValue ) == KVP_TYPE_GUID ) {
         return (gpointer)kvp_value_get_guid( pInfo->pKvpValue );
     } else {
@@ -252,6 +285,9 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( pValue != NULL );
+
     if( pInfo->value_type == KVP_TYPE_GUID ) {
         kvp_frame_set_guid( pInfo->pKvpFrame, pInfo->path->str, (GUID*)pValue );
     }
@@ -262,6 +298,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_val_if_fail( pObject != NULL, gnc_numeric_zero() );
+
     if( kvp_value_get_type( pInfo->pKvpValue ) == KVP_TYPE_NUMERIC ) {
         return kvp_value_get_numeric( pInfo->pKvpValue );
     } else {
@@ -274,6 +312,8 @@
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;
 
+	g_return_if_fail( pObject != NULL );
+
     if( pInfo->value_type == KVP_TYPE_NUMERIC ) {
         kvp_frame_set_numeric( pInfo->pKvpFrame, pInfo->path->str, value );
     }
@@ -283,8 +323,13 @@
 save_slot( const gchar* key, KvpValue* value, gpointer data )
 {
     slot_info_t* pSlot_info = (slot_info_t*)data;
-    gint curlen = pSlot_info->path->len;
+    gint curlen;
 
+	g_return_if_fail( key != NULL );
+	g_return_if_fail( value != NULL );
+	g_return_if_fail( data != NULL );
+
+    curlen = pSlot_info->path->len;
     pSlot_info->pKvpValue = value;
     if( curlen != 0 ) {
         g_string_append( pSlot_info->path, "/" );
@@ -307,6 +352,10 @@
 {
     slot_info_t slot_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+	g_return_if_fail( pFrame != NULL );
+
     /* First, delete the old slots for this object */
     gnc_gda_slots_delete( be, guid );
 
@@ -322,6 +371,9 @@
 {
     slot_info_t slot_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+
     slot_info.be = be;
     slot_info.guid = guid;
     (void)gnc_gda_do_db_operation( be, OP_DB_DELETE, TABLE_NAME,
@@ -333,6 +385,11 @@
 {
     slot_info_t slot_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pFrame != NULL );
+
     slot_info.be = be;
     slot_info.pKvpFrame = pFrame;
     slot_info.path = NULL;
@@ -351,12 +408,15 @@
     GdaObject* ret;
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
     gchar* field_name;
-
     static GdaQuery* query = NULL;
     GdaQueryCondition* cond;
     GdaQueryField* key_value;
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( guid != NULL );
+	g_return_if_fail( pFrame != NULL );
+
     guid_to_string_buff( guid, guid_buf );
 
     /* First time, create the query */
@@ -415,6 +475,8 @@
 static void
 create_slots_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, TABLE_NAME, col_table );
 }
 

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-transaction-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-transaction-gda.c	2008-01-01 20:07:22 UTC (rev 16779)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-transaction-gda.c	2008-01-01 20:55:25 UTC (rev 16780)
@@ -113,6 +113,9 @@
     const Split* pSplit = GNC_SPLIT(pObject);
     static gchar c[2];
 
+	g_return_val_if_fail( pObject != NULL, NULL );
+	g_return_val_if_fail( GNC_IS_SPLIT(pObject), NULL );
+
     c[0] = xaccSplitGetReconcile( pSplit );
     c[1] = '\0';
     return (gpointer)c;
@@ -124,12 +127,19 @@
     Split* pSplit = GNC_SPLIT(pObject);
     const gchar* s = (const gchar*)pValue;
 
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_SPLIT(pObject) );
+	g_return_if_fail( pValue != NULL );
+
     xaccSplitSetReconcile( pSplit, s[0] );
 }
 
 static void 
 set_split_reconcile_date( gpointer pObject, Timespec ts )
 {
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( GNC_IS_SPLIT(pObject) );
+
     xaccSplitSetDateReconciledTS( GNC_SPLIT(pObject), &ts );
 }
 
@@ -137,6 +147,9 @@
 retrieve_numeric_value( gpointer pObject, gnc_numeric value )
 {
     gnc_numeric* pResult = (gnc_numeric*)pObject;
+
+	g_return_if_fail( pObject != NULL );
+
     *pResult = value;
 }
 
@@ -151,8 +164,12 @@
 static gnc_numeric
 get_gnc_numeric_from_row( GncGdaBackend* be, GdaDataModel* model, int row )
 {
-	gnc_numeric val;
+	gnc_numeric val = gnc_numeric_zero();
 
+	g_return_val_if_fail( be != NULL, val );
+	g_return_val_if_fail( model != NULL, val );
+	g_return_val_if_fail( row >= 0, val );
+
     gnc_gda_load_object( be, model, row, NULL, &val, quantity_table );
 
     return val;
@@ -170,6 +187,9 @@
 	gnc_numeric bal = gnc_numeric_zero();
     GdaObject* ret;
 
+	g_return_val_if_fail( be != NULL, bal );
+	g_return_val_if_fail( query != NULL, bal );
+
 	/* Execute the query */
     ret = gnc_gda_execute_query( be, query );
 
@@ -199,6 +219,12 @@
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
 	gchar* sql;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pAccount != NULL );
+	g_return_if_fail( start_balance != NULL );
+	g_return_if_fail( cleared_balance != NULL );
+	g_return_if_fail( reconciled_balance != NULL );
+
     guid_to_string_buff( qof_instance_get_guid( pAccount ), guid_buf );
 
 	/*
@@ -256,13 +282,17 @@
 	g_free( sql );
 }
 
-static Split*
+static void
 load_single_split( GncGdaBackend* be, GdaDataModel* pModel, int row )
 {
     const GUID* guid;
     GUID split_guid;
 	Split* pSplit;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+
     guid = gnc_gda_load_guid( be, pModel, row );
     split_guid = *guid;
 
@@ -272,20 +302,13 @@
     }
 
     /* If the split is dirty, don't overwrite it */
-    if( qof_instance_is_dirty( QOF_INSTANCE(pSplit) ) ) {
-        return pSplit;
-    }
-
-    gnc_gda_load_object( be, pModel, row, GNC_ID_SPLIT, pSplit, split_col_table );
-
-    gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(pSplit) ),
+    if( !qof_instance_is_dirty( QOF_INSTANCE(pSplit) ) ) {
+    	gnc_gda_load_object( be, pModel, row, GNC_ID_SPLIT, pSplit, split_col_table );
+    	gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(pSplit) ),
                             qof_instance_get_slots( QOF_INSTANCE(pSplit) ) );
+	}
 
     g_assert( pSplit == xaccSplitLookup( &split_guid, be->primary_book ) );
-
-    //qof_instance_mark_clean( QOF_INSTANCE(pSplit) );
-
-    return pSplit;
 }
 
 static void
@@ -297,6 +320,9 @@
     GdaQueryCondition* cond;
     GValue value;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( tx_guid != NULL );
+
     guid_to_string_buff( tx_guid, guid_buf );
     memset( &value, 0, sizeof( GValue ) );
     g_value_init( &value, G_TYPE_STRING );
@@ -319,13 +345,17 @@
     }
 }
 
-static Transaction*
+static void
 load_single_tx( GncGdaBackend* be, GdaDataModel* pModel, int row )
 {
     const GUID* guid;
     GUID tx_guid;
 	Transaction* pTx;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+
     guid = gnc_gda_load_guid( be, pModel, row );
     tx_guid = *guid;
 
@@ -343,8 +373,6 @@
     xaccTransCommitEdit( pTx );
 
     g_assert( pTx == xaccTransLookup( &tx_guid, be->primary_book ) );
-
-    return pTx;
 }
 
 static void
@@ -352,6 +380,9 @@
 {
     GdaObject* ret;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( query != NULL );
+
     ret = gnc_gda_execute_query( be, query );
     if( GDA_IS_DATA_MODEL( ret ) ) {
         GdaDataModel* pModel = GDA_DATA_MODEL(ret);
@@ -371,6 +402,9 @@
 	gchar* sql;
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( tx_guid != NULL );
+
     guid_to_string_buff( tx_guid, guid_buf );
 	sql = g_strdup_printf( "SELECT * FROM %s WHERE guid = %s", TRANSACTION_TABLE, guid_buf );
 	query = gnc_gda_create_query_from_sql( be, sql );
@@ -381,6 +415,8 @@
 static void
 create_transaction_tables( GncGdaBackend* be )
 {
+	g_return_if_fail( be != NULL );
+
     gnc_gda_create_table_if_needed( be, TRANSACTION_TABLE, tx_col_table );
     gnc_gda_create_table_if_needed( be, SPLIT_TABLE, split_col_table );
 }
@@ -391,6 +427,10 @@
     split_info_t* split_info = (split_info_t*)user_data;
     Split* pSplit = GNC_SPLIT(data);
 
+	g_return_if_fail( data != NULL );
+	g_return_if_fail( GNC_IS_SPLIT(data) );
+	g_return_if_fail( user_data != NULL );
+
     gnc_gda_slots_delete( split_info->be,
                     qof_instance_get_guid( QOF_INSTANCE(pSplit) ) );
 }
@@ -400,6 +440,9 @@
 {
     split_info_t split_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pTx != NULL );
+
     (void)gnc_gda_do_db_operation( be, OP_DB_DELETE, SPLIT_TABLE,
                                 SPLIT_TABLE, pTx, guid_col_table );
     split_info.be = be;
@@ -410,16 +453,17 @@
 static void
 commit_split( GncGdaBackend* be, QofInstance* inst )
 {
-    Split* pSplit = GNC_SPLIT(inst);
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
 
     (void)gnc_gda_do_db_operation( be,
                         (qof_instance_get_destroying(inst) ? OP_DB_DELETE : OP_DB_ADD_OR_UPDATE ),
                         SPLIT_TABLE,
-                        GNC_ID_SPLIT, pSplit,
+                        GNC_ID_SPLIT, inst,
                         split_col_table );
     gnc_gda_slots_save( be,
-                        qof_instance_get_guid( QOF_INSTANCE(pSplit) ),
-                        qof_instance_get_slots( QOF_INSTANCE(pSplit) ) );
+                        qof_instance_get_guid( inst ),
+                        qof_instance_get_slots( inst ) );
 }
 
 static void
@@ -428,6 +472,10 @@
     split_info_t* split_info = (split_info_t*)user_data;
     Split* pSplit = GNC_SPLIT(data);
 
+	g_return_if_fail( data != NULL );
+	g_return_if_fail( GNC_IS_SPLIT(data) );
+	g_return_if_fail( user_data != NULL );
+
     commit_split( split_info->be, QOF_INSTANCE(pSplit) );
 }
 
@@ -436,6 +484,10 @@
 {
     split_info_t split_info;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( tx_guid != NULL );
+	g_return_if_fail( pSplitList != NULL );
+
     split_info.be = be;
     split_info.guid = tx_guid;
     g_list_foreach( pSplitList, save_split_cb, &split_info );
@@ -447,6 +499,10 @@
     Transaction* pTx = GNC_TRANS(inst);
     const GUID* guid;
 
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( inst != NULL );
+	g_return_if_fail( GNC_IS_TRANS(inst) );
+
     // Ensure the commodity is in the db
     gnc_gda_save_commodity( be, xaccTransGetCurrency( pTx ) );
 
@@ -481,12 +537,16 @@
     }
 }
 
-void gnc_gda_transaction_commit_splits( GncGdaBackend* be, Transaction* pTx )
+void
+gnc_gda_transaction_commit_splits( GncGdaBackend* be, Transaction* pTx )
 {
     SplitList* splits;
     Split* s;
     QofBackend* qbe = (QofBackend*)be;
     
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pTx != NULL );
+
     splits = xaccTransGetSplitList( pTx );
     for( ; splits != NULL; splits = splits->next ) {
         s = GNC_SPLIT(splits->data);
@@ -499,13 +559,16 @@
 static const GUID*
 get_guid_from_query( QofQuery* pQuery )
 {
-    GList* pOrTerms = qof_query_get_terms( pQuery );
+    GList* pOrTerms;
     GList* pAndTerms;
     GList* andTerm;
     QofQueryTerm* pTerm;
     QofQueryPredData* pPredData;
     GSList* pParamPath;
 
+	g_return_val_if_fail( pQuery != NULL, NULL );
+
+    pOrTerms = qof_query_get_terms( pQuery );
     pAndTerms = (GList*)pOrTerms->data;
     andTerm = pAndTerms->next;
     pTerm = (QofQueryTerm*)andTerm->data;
@@ -528,11 +591,13 @@
     const GUID* acct_guid;
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
 	gchar* s;
-
-#if 1
 	GdaQuery* query;
 	GdaObject* results;
 
+	g_return_val_if_fail( be != NULL, NULL );
+	g_return_val_if_fail( pQuery != NULL, NULL );
+
+#if 1
     acct_guid = get_guid_from_query( pQuery );
     guid_to_string_buff( acct_guid, guid_buf );
 	buf = g_strdup_printf( "SELECT DISTINCT tx_guid FROM %s WHERE account_guid='%s'", SPLIT_TABLE, guid_buf );
@@ -653,8 +718,13 @@
 run_split_query( GncGdaBackend* be, gpointer pQuery )
 {
     GdaQuery* query;
+    const gchar* sql;
+
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pQuery != NULL );
+
 #if 1
-    const gchar* sql = (const gchar*)pQuery;
+    sql = (const gchar*)pQuery;
 
 	query = gnc_gda_create_query_from_sql( be, sql );
 #else
@@ -664,8 +734,11 @@
 }
 
 static void
-free_split_query( GncGdaBackend* pBackend, gpointer pQuery )
+free_split_query( GncGdaBackend* be, gpointer pQuery )
 {
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pQuery != NULL );
+
 #if 1
     g_free( pQuery );
 #else
@@ -677,14 +750,20 @@
 static void
 load_tx_guid( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
             QofSetterFunc setter, gpointer pObject,
-            const col_cvt_t* table )
+            const col_cvt_t* table_row )
 {
     const GValue* val;
     GUID guid;
     const GUID* pGuid;
 	Transaction* tx = NULL;
 
-    val = gda_data_model_get_value_at_col_name( pModel, table->col_name, row );
+	g_return_if_fail( be != NULL );
+	g_return_if_fail( pModel != NULL );
+	g_return_if_fail( row >= 0 );
+	g_return_if_fail( pObject != NULL );
+	g_return_if_fail( table_row != NULL );
+
+    val = gda_data_model_get_value_at_col_name( pModel, table_row->col_name, row );
     if( gda_value_is_null( val ) ) {
         pGuid = NULL;
     } else {
@@ -694,8 +773,8 @@
 	if( pGuid != NULL ) {
 		tx = xaccTransLookup( pGuid, be->primary_book );
 	}
-    if( table->gobj_param_name != NULL ) {
-		g_object_set( pObject, table->gobj_param_name, tx, NULL );
+    if( table_row->gobj_param_name != NULL ) {
+		g_object_set( pObject, table_row->gobj_param_name, tx, NULL );
     } else {
 		(*setter)( pObject, (const gpointer)tx );
     }



More information about the gnucash-changes mailing list