r17926 - gnucash/trunk/src - Fix CRIT errors when loading owner info in business objects.

Phil Longstaff plongstaff at cvs.gnucash.org
Sun Feb 15 20:08:58 EST 2009


Author: plongstaff
Date: 2009-02-15 20:08:57 -0500 (Sun, 15 Feb 2009)
New Revision: 17926
Trac: http://svn.gnucash.org/trac/changeset/17926

Modified:
   gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
   gnucash/trunk/src/backend/sql/gnc-backend-sql.c
   gnucash/trunk/src/backend/sql/gnc-backend-sql.h
   gnucash/trunk/src/business/business-core/sql/gnc-owner-sql.c
Log:
Fix CRIT errors when loading owner info in business objects.


Modified: gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2009-02-15 19:26:38 UTC (rev 17925)
+++ gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2009-02-16 01:08:57 UTC (rev 17926)
@@ -676,6 +676,7 @@
 	GncDbiSqlRow* dbi_row = (GncDbiSqlRow*)row;
 	gushort type;
 	GValue* value;
+	long long v64;
 	gint64 raw_int64_value;
 	gint raw_int_value;
 
@@ -686,6 +687,7 @@
 			g_value_init( value, G_TYPE_INT64 );
 
 			// FIXME: Bug in LibDBI: 64 bit int values returned incorrectly
+			v64 = dbi_result_get_longlong( dbi_row->result, col_name );
 			raw_int64_value = dbi_result_get_longlong( dbi_row->result, col_name );
 			raw_int_value = dbi_result_get_int( dbi_row->result, col_name );
 			if( raw_int_value < 0 && raw_int64_value > 0 ) {

Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.c	2009-02-15 19:26:38 UTC (rev 17925)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.c	2009-02-16 01:08:57 UTC (rev 17926)
@@ -865,8 +865,8 @@
 
 /* ================================================================= */
 
-static gint64
-get_integer_value( const GValue* value )
+gint64
+gnc_sql_get_integer_value( const GValue* value )
 {
 	g_return_val_if_fail( value != NULL, 0 );
 
@@ -1060,7 +1060,7 @@
     if( val == NULL ) {
         int_value = 0;
     } else {
-        int_value = get_integer_value( val );
+        int_value = gnc_sql_get_integer_value( val );
     }
     if( table_row->gobj_param_name != NULL ) {
 		g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
@@ -1219,7 +1219,7 @@
 
     val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name );
     if( val != NULL ) {
-        i64_value = get_integer_value( val );
+        i64_value = gnc_sql_get_integer_value( val );
     }
     (*i64_setter)( pObject, i64_value );
 }
@@ -1703,7 +1703,7 @@
         isNull = TRUE;
         num = 0;
     } else {
-        num = get_integer_value( val );
+        num = gnc_sql_get_integer_value( val );
     }
     buf = g_strdup_printf( "%s_denom", table_row->col_name );
     val = gnc_sql_row_get_value_at_col_name( row, buf );
@@ -1712,7 +1712,7 @@
         isNull = TRUE;
         denom = 1;
     } else {
-        denom = get_integer_value( val );
+        denom = gnc_sql_get_integer_value( val );
     }
     n = gnc_numeric_create( num, denom );
     if( !isNull ) {

Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.h
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.h	2009-02-15 19:26:38 UTC (rev 17925)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.h	2009-02-16 01:08:57 UTC (rev 17926)
@@ -657,7 +657,6 @@
 void gnc_sql_finalize_version_info( GncSqlBackend* be );
 
 /**
- *
  * Commits a "standard" item to the database.  In most cases, a commit of one object vs
  * another differs only in the table name and column table.
  *
@@ -671,6 +670,14 @@
 gboolean gnc_sql_commit_standard_item( GncSqlBackend* be, QofInstance* inst, const gchar* tableName,
                         	QofIdTypeConst obj_name, const GncSqlColumnTableEntry* col_table );
 
+/**
+ * Gets an integer value (of any size) from a GValue.
+ *
+ * @param value Source value
+ * @return Integer value
+ */
+gint64 gnc_sql_get_integer_value( const GValue* value );
+
 void _retrieve_guid_( gpointer pObject, gpointer pValue );
 
 gpointer gnc_sql_compile_query( QofBackend* pBEnd, QofQuery* pQuery );

Modified: gnucash/trunk/src/business/business-core/sql/gnc-owner-sql.c
===================================================================
--- gnucash/trunk/src/business/business-core/sql/gnc-owner-sql.c	2009-02-15 19:26:38 UTC (rev 17925)
+++ gnucash/trunk/src/business/business-core/sql/gnc-owner-sql.c	2009-02-16 01:08:57 UTC (rev 17926)
@@ -68,7 +68,7 @@
 	book = be->primary_book;
     buf = g_strdup_printf( "%s_type", table_row->col_name );
     val = gnc_sql_row_get_value_at_col_name( row, buf );
-	type = (GncOwnerType)g_value_get_int( val );
+	type = (GncOwnerType)gnc_sql_get_integer_value( val );
     g_free( buf );
     buf = g_strdup_printf( "%s_guid", table_row->col_name );
     val = gnc_sql_row_get_value_at_col_name( row, buf );



More information about the gnucash-changes mailing list