Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.51 KB | None | 0 0
  1. Author: Fabian Kosmale <fabian.kosmale@qt.io>
  2. Date:   Mon Feb 17 13:56:54 2020 +0100
  3.  
  4.     workaround
  5.  
  6. diff --git src/qml/qml/qqmlvmemetaobject.cpp src/qml/qml/qqmlvmemetaobject.cpp
  7. index de23e929e2..715fb78257 100644
  8. --- src/qml/qml/qqmlvmemetaobject.cpp
  9. +++ src/qml/qml/qqmlvmemetaobject.cpp
  10. @@ -82,9 +82,10 @@ public:
  11.              return;
  12.          }
  13.  
  14. -        if (auto *md = static_cast<QV4::MemberData *>(
  15. -                    m_metaObject->propertyAndMethodStorage.asManaged())) {
  16. -            const auto *v = (md->data() + m_id)->as<QV4::VariantObject>();
  17. +        if (auto *md = m_metaObject->propertyAndMethodStorageAsMemberData()) {
  18. +            if (md->d()->values.alloc <= m_id)
  19. +                return;
  20. +            const auto *v = md->d()->values[m_id].as<QV4::VariantObject>();//(md->data() + m_id)->as<QV4::
  21.              Q_ASSERT(v);
  22.              Q_ASSERT(v->d());
  23.              QVariant &data = v->d()->data();
  24. @@ -115,23 +116,33 @@ private:
  25.  static void list_append(QQmlListProperty<QObject> *prop, QObject *o)
  26.  {
  27.      const ResolvedList resolved(prop);
  28. +    if (!resolved.list())
  29. +        return;
  30.      resolved.list()->append(o);
  31.      resolved.activateSignal();
  32.  }
  33.  
  34.  static int list_count(QQmlListProperty<QObject> *prop)
  35.  {
  36. -    return ResolvedList(prop).list()->count();
  37. +    auto list = ResolvedList(prop).list();
  38. +    if (!list)
  39. +        return 0;
  40. +    return list->count();
  41.  }
  42.  
  43.  static QObject *list_at(QQmlListProperty<QObject> *prop, int index)
  44.  {
  45. -    return ResolvedList(prop).list()->at(index);
  46. +    auto list = ResolvedList(prop).list();
  47. +    if (!list)
  48. +        return nullptr;
  49. +    return list->at(index);
  50.  }
  51.  
  52.  static void list_clear(QQmlListProperty<QObject> *prop)
  53.  {
  54.      const ResolvedList resolved(prop);
  55. +    if (!resolved.list())
  56. +        return;
  57.      resolved.list()->clear();
  58.      resolved.activateSignal();
  59.  }
  60. @@ -139,6 +150,8 @@ static void list_clear(QQmlListProperty<QObject> *prop)
  61.  static void list_replace(QQmlListProperty<QObject> *prop, int index, QObject *o)
  62.  {
  63.      const ResolvedList resolved(prop);
  64. +    if (!resolved.list())
  65. +        return;
  66.      resolved.list()->replace(index, o);
  67.      resolved.activateSignal();
  68.  }
  69. @@ -146,6 +159,8 @@ static void list_replace(QQmlListProperty<QObject> *prop, int index, QObject *o)
  70.  static void list_removeLast(QQmlListProperty<QObject> *prop)
  71.  {
  72.      const ResolvedList resolved(prop);
  73. +    if (!resolved.list())
  74. +        return;
  75.      resolved.list()->removeLast();
  76.      resolved.activateSignal();
  77.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement