From bf810e9c50050c597576044e2b930915b0bb2811 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Sat, 9 Jun 2018 18:42:14 +0200 Subject: [PATCH] Check if conversion was successful before passing to locale --- src/core/qgsfield.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/qgsfield.cpp b/src/core/qgsfield.cpp index 09890895056..0b056b1aa82 100644 --- a/src/core/qgsfield.cpp +++ b/src/core/qgsfield.cpp @@ -244,11 +244,14 @@ QString QgsField::displayString( const QVariant &v ) const return QString::number( v.toDouble(), 'f', d->precision ); } } - // Other numeric types out of doubles + // Other numeric types than doubles else if ( isNumeric() && ! QLocale().numberOptions() & QLocale::NumberOption::OmitGroupSeparator ) { - return QLocale().toString( v.toLongLong() ); + bool ok; + qlonglong converted( v.toLongLong( &ok ) ); + if ( ok ) + return QLocale().toString( converted ); } // Fallback if special rules do not apply return v.toString(); @@ -305,7 +308,7 @@ bool QgsField::convertCompatible( QVariant &v ) const QVariant tmp( v ); if ( d->type == QVariant::Double && !tmp.convert( d->type ) ) { - v = v.toString().replace( ',', '.' ); + v = v.toString().replace( QLocale().decimalPoint(), '.' ); } }