[Development] QProperty and library coding guide

Thiago Macieira thiago.macieira at intel.com
Wed Jul 22 18:26:45 CEST 2020

On Wednesday, 22 July 2020 08:52:17 PDT Simon Hausmann wrote:
> > On Wednesday, 22 July 2020 00:05:34 PDT Simon Hausmann wrote:
> > > That said, this very construct that you're referring to, that is what
> > > has been in user
> > > code since QtDeclarative was been released [1]. Anybody using
> > > qmlRegisterType() will
> > > up with local template code that does this. It's impact wise as if moc
> > > generated it.
> > 
> > Have you hearad of a Schrödinbug? Not a Heisenbug.
> > 
> > It's a bug that was always there but hurt no one. Until someone noticed
> > it.
> > Now it will keep reappearing all the time.
> Hehe. Maybe it’s more like a SchödinUB 

Anyway, I looked at the code in question and though it is UB, it's also 
optional. It only kicks in if the type being registered multiply-derives from 
one of three helper classes. Most user-registered types don't.

There's also a very simple fix for that. Instead of trying to record the 
offset in the QML type registry, record the pointer to a function that takes a 
pointer to QObject and returns the adjusted pointer to those classes. This 
could have been done in 2010.

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel DPG Cloud Engineering

More information about the Development mailing list