Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-46433

QQmlPropertyMap constructor is declared in public header but has unstable ABI

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Affects Version/s: 5.4.1
    • Fix Version/s: 5.10.0 Alpha
    • Labels:
      None
    • Environment:
      Okay, I think using a delegating constructor that is actually possible now.

      Description

      The QQmlPropertyMap protected template constructor is defined as:

      template<class DerivedType>
      QQmlPropertyMap(DerivedType *derived, QObject *parentObj)
          : QObject(*allocatePrivate(), parentObj)
      

      Here, the result of allocatePrivate() dereferencing is of type QObjectPrivate, which has unstable ABI (i.e. its size can change).

      So the code using this constructor (i.e. gsettings-qt does it) will break whenever QObjectPrivate changes, which is not ideal.

      As Qt promises being binary compatible, such stuff should not be exposed in public headers.

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            Assignee:
            shausman Simon Hausmann
            Reporter:
            mandriver Dmitry Shachnev
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes