r17453 - gnucash/trunk/src/backend/sql - Don't rely on g_value_transform(). Added cases for G_TYPE_INT, G_TYPE_INT64
Phil Longstaff
plongstaff at cvs.gnucash.org
Sun Aug 3 14:10:28 EDT 2008
Author: plongstaff
Date: 2008-08-03 14:10:27 -0400 (Sun, 03 Aug 2008)
New Revision: 17453
Trac: http://svn.gnucash.org/trac/changeset/17453
Modified:
gnucash/trunk/src/backend/sql/gnc-backend-sql.c
Log:
Don't rely on g_value_transform(). Added cases for G_TYPE_INT, G_TYPE_INT64
and G_TYPE_DOUBLE. If new GValue types are used in the future and
g_value_transform() *is* called, a warning message will be logged with the
type name.
Modified: gnucash/trunk/src/backend/sql/gnc-backend-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-backend-sql.c 2008-08-03 00:18:23 UTC (rev 17452)
+++ gnucash/trunk/src/backend/sql/gnc-backend-sql.c 2008-08-03 18:10:27 UTC (rev 17453)
@@ -2126,6 +2126,8 @@
gnc_sql_get_sql_value( const GncSqlConnection* conn, const GValue* value )
{
if( value != NULL && G_IS_VALUE( value ) ) {
+ GType type = G_VALUE_TYPE(value);
+
if( G_VALUE_HOLDS_STRING(value) ) {
if( g_value_get_string( value ) != NULL ) {
gchar* before_str;
@@ -2137,7 +2139,16 @@
} else {
return g_strdup( "NULL" );
}
- } else if( g_value_type_transformable( G_VALUE_TYPE(value), G_TYPE_STRING ) ) {
+ } else if( type == G_TYPE_INT64 ) {
+ return g_strdup_printf( "%lld", g_value_get_int64( value ) );
+
+ } else if( type == G_TYPE_INT ) {
+ return g_strdup_printf( "%d", g_value_get_int( value ) );
+
+ } else if( type == G_TYPE_DOUBLE ) {
+ return g_strdup_printf( "%g", g_value_get_double( value ) );
+
+ } else if( g_value_type_transformable( type, G_TYPE_STRING ) ) {
GValue* string;
gchar* str;
@@ -2146,9 +2157,10 @@
str = g_value_dup_string( string );
g_value_unset( string );
g_free( string );
+ PWARN( "using g_value_transform(), gtype = '%s'\n", g_type_name( type ) );
return str;
} else {
- PWARN( "not transformable, gtype = '%s'\n", g_type_name( G_VALUE_TYPE(value) ) );
+ PWARN( "not transformable, gtype = '%s'\n", g_type_name( type ) );
return "$$$";
}
} else {
More information about the gnucash-changes
mailing list