fix sweep step for tainted QObject JavaScript wrappers
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Mon, 13 Jun 2022 18:36:23 +0000 (19:36 +0100)
committerDmitry Shachnev <mitya57@debian.org>
Mon, 13 Jun 2022 18:36:23 +0000 (19:36 +0100)
commit2ec9c275ed0195b8aa1fef6fb19b9141a3631709
tree50f08b55aece7566b4278d99559c2ea3392194f4
parentca1fb65e2629991ef0ffd7507c0beec8694365a1
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