r18848 - gnucash/trunk/src/backend/sql - Fix bug 611885 - Crash when opening postgresql file
Phil Longstaff
plongstaff at code.gnucash.org
Sat Mar 6 05:40:53 EST 2010
Author: plongstaff
Date: 2010-03-06 05:40:53 -0500 (Sat, 06 Mar 2010)
New Revision: 18848
Trac: http://svn.gnucash.org/trac/changeset/18848
Modified:
gnucash/trunk/src/backend/sql/gnc-backend-sql.c
Log:
Fix bug 611885 - Crash when opening postgresql file
Previous work setting Timespec values via gobject properties missed the case where the timespec loaded from the database was NULL.
Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.c 2010-03-05 20:46:35 UTC (rev 18847)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.c 2010-03-06 10:40:53 UTC (rev 18848)
@@ -1609,6 +1609,7 @@
const GValue* val;
Timespec ts = {0, 0};
TimespecSetterFunc ts_setter;
+ gboolean isOK = FALSE;
g_return_if_fail( be != NULL );
g_return_if_fail( row != NULL );
@@ -1619,7 +1620,7 @@
ts_setter = (TimespecSetterFunc)setter;
val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name );
if( val == NULL ) {
- (*ts_setter)( pObject, ts );
+ isOK = TRUE;
} else {
if( G_VALUE_HOLDS_STRING( val ) ) {
const gchar* s = g_value_get_string( val );
@@ -1633,18 +1634,21 @@
s[10], s[11],
s[12], s[13] );
ts = gnc_iso8601_to_timespec_gmt( buf );
- if (table_row->gobj_param_name != NULL) {
- g_object_set( pObject, table_row->gobj_param_name, &ts, NULL );
- } else {
- (*ts_setter)( pObject, ts );
- }
g_free( buf );
+ isOK = TRUE;
}
} else {
PWARN( "Unknown timespec type: %s", G_VALUE_TYPE_NAME( val ) );
}
}
+ if( isOK ) {
+ if (table_row->gobj_param_name != NULL) {
+ g_object_set( pObject, table_row->gobj_param_name, &ts, NULL );
+ } else {
+ (*ts_setter)( pObject, ts );
+ }
+ }
}
static void
More information about the gnucash-changes
mailing list