fix sweep step for tainted QObject JavaScript wrappers
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Sat, 17 Dec 2022 15:20:11 +0000 (15:20 +0000)
committerDmitry Shachnev <mitya57@debian.org>
Sat, 17 Dec 2022 15:20:11 +0000 (15:20 +0000)
commit2226f8ed74cd06ed81f6b72c5549b8de54b2aa16
treebaa9df0748de6030360348ef268760d421d882c7
parent7ad8e7c8221c9f455fdaf2a82ec13c1030b1fd02
fix sweep step for tainted QObject JavaScript wrappers

Origin: upstream, https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=e6b2f88d892dcf39
Last-Update: 2022-02-13

Currently, whenever the garbage collector runs, it will destroy all
valid tainted wrappers.

Only null or undefined wrappers will be preserved in the
m_multiplyWrappedQObjects map.

It seems like "!" was overlooked in
3b5d37ce3841c4bfdf1c629d33f0e33b881b47fb. Prior to that change, it
was "!it.value()->markBit()", so calling erase() in the then branch
did make sense. But with "!it.value().isNullOrUndefined()", erase()
will be called for every valid wrapper, which is the opposite what we
want.

Gbp-Pq: Name fix_sweep_step.patch
src/qml/memory/qv4mm.cpp
tests/auto/qml/qjsengine/tst_qjsengine.cpp
tests/auto/qml/qv4mm/tst_qv4mm.cpp