Advertisement
Guest User

Untitled

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