summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r--src/corelib/kernel/qvariant.cpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 533ccd7..ebd2e30 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -156,7 +156,16 @@ static void construct(QVariant::Private *x, const void *copy)
x->data.b = copy ? *static_cast<const bool *>(copy) : false;
break;
case QVariant::Double:
+#if defined(Q_CC_RVCT)
+ // Using trinary operator with 64bit constants crashes when ran on Symbian device
+ if (copy){
+ x->data.d = *static_cast<const double*>(copy);
+ } else {
+ x->data.d = 0.0;
+ }
+#else
x->data.d = copy ? *static_cast<const double*>(copy) : 0.0;
+#endif
break;
case QMetaType::Float:
x->data.f = copy ? *static_cast<const float*>(copy) : 0.0f;
@@ -165,10 +174,28 @@ static void construct(QVariant::Private *x, const void *copy)
x->data.o = copy ? *static_cast<QObject *const*>(copy) : 0;
break;
case QVariant::LongLong:
+#if defined(Q_CC_RVCT)
+ // Using trinary operator with 64bit constants crashes when ran on Symbian device
+ if (copy){
+ x->data.ll = *static_cast<const qlonglong *>(copy);
+ } else {
+ x->data.ll = Q_INT64_C(0);
+ }
+#else
x->data.ll = copy ? *static_cast<const qlonglong *>(copy) : Q_INT64_C(0);
+#endif
break;
case QVariant::ULongLong:
+#if defined(Q_CC_RVCT)
+ // Using trinary operator with 64bit constants crashes when ran on Symbian device
+ if (copy){
+ x->data.ull = *static_cast<const qulonglong *>(copy);
+ } else {
+ x->data.ull = Q_UINT64_C(0);
+ }
+#else
x->data.ull = copy ? *static_cast<const qulonglong *>(copy) : Q_UINT64_C(0);
+#endif
break;
case QVariant::Invalid:
case QVariant::UserType:
@@ -598,7 +625,7 @@ static bool convert(const QVariant::Private *d, QVariant::Type t, void *result,
ok = &dummy;
switch (uint(t)) {
- case QVariant::Url:
+ case QVariant::Url:
switch (d->type) {
case QVariant::String:
*static_cast<QUrl *>(result) = QUrl(*v_cast<QString>(d));
@@ -1197,8 +1224,8 @@ const QVariant::Handler *QVariant::handler = &qt_kernel_variant_handler;
and versatile, but may prove less memory and speed efficient than
storing specific types in standard data structures.
- QVariant also supports the notion of null values, where you can
- have a defined type with no value set. However, note that QVariant
+ QVariant also supports the notion of null values, where you can
+ have a defined type with no value set. However, note that QVariant
types can only be cast when they have had a value set.
\snippet doc/src/snippets/code/src_corelib_kernel_qvariant.cpp 1