mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Fix bug where NULL dates on sqlite cause sigsegv
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@18283 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
05a3bfd31b
commit
e0f54bc356
@ -1691,25 +1691,28 @@ load_date( const GncSqlBackend* be, GncSqlRow* row,
|
|||||||
if( G_VALUE_HOLDS_STRING( val ) ) {
|
if( G_VALUE_HOLDS_STRING( val ) ) {
|
||||||
// Format of date is YYYYMMDD
|
// Format of date is YYYYMMDD
|
||||||
const gchar* s = g_value_get_string( val );
|
const gchar* s = g_value_get_string( val );
|
||||||
gchar buf[5];
|
|
||||||
GDateDay day;
|
|
||||||
guint month;
|
|
||||||
GDateYear year;
|
|
||||||
|
|
||||||
strncpy( buf, &s[0], 4 );
|
if( s != NULL ) {
|
||||||
buf[4] = '\0';
|
gchar buf[5];
|
||||||
year = (GDateYear)atoi( buf );
|
GDateDay day;
|
||||||
strncpy( buf, &s[4], 2 );
|
guint month;
|
||||||
buf[2] = '\0';
|
GDateYear year;
|
||||||
month = (guint)atoi( buf );
|
|
||||||
strncpy( buf, &s[6], 2 );
|
|
||||||
day = (GDateDay)atoi( buf );
|
|
||||||
|
|
||||||
if( year != 0 || month != 0 || day != (GDateDay)0 ) {
|
strncpy( buf, &s[0], 4 );
|
||||||
date = g_date_new_dmy( day, month, year );
|
buf[4] = '\0';
|
||||||
(*setter)( pObject, date );
|
year = (GDateYear)atoi( buf );
|
||||||
g_date_free( date );
|
strncpy( buf, &s[4], 2 );
|
||||||
}
|
buf[2] = '\0';
|
||||||
|
month = (guint)atoi( buf );
|
||||||
|
strncpy( buf, &s[6], 2 );
|
||||||
|
day = (GDateDay)atoi( buf );
|
||||||
|
|
||||||
|
if( year != 0 || month != 0 || day != (GDateDay)0 ) {
|
||||||
|
date = g_date_new_dmy( day, month, year );
|
||||||
|
(*setter)( pObject, date );
|
||||||
|
g_date_free( date );
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
PWARN( "Unknown date type: %s", G_VALUE_TYPE_NAME( val ) );
|
PWARN( "Unknown date type: %s", G_VALUE_TYPE_NAME( val ) );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user