File: fortify_qmlexecutedeferred.patch

package info (click to toggle)
qtdeclarative-opensource-src 5.15.17%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 259,248 kB
  • sloc: javascript: 512,415; cpp: 497,385; xml: 8,892; python: 3,304; ansic: 2,764; sh: 206; makefile: 62; php: 27
file content (38 lines) | stat: -rw-r--r-- 1,456 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Description: QML: fortify qmlExecuteDeferred some more
Origin: upstream, https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=f69b6f0940b178b4
Last-Update: 2024-11-07

--- a/src/qml/qml/qqmlengine.cpp
+++ b/src/qml/qml/qqmlengine.cpp
@@ -1583,17 +1583,23 @@ void qmlExecuteDeferred(QObject *object)
 {
     QQmlData *data = QQmlData::get(object);
 
-    if (data && !data->deferredData.isEmpty() && !data->wasDeleted(object)) {
-        QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine);
+    if (!data
+            || !data->context
+            || !data->context->engine
+            || data->deferredData.isEmpty()
+            || data->wasDeleted(object)) {
+        return;
+    }
 
-        QQmlComponentPrivate::DeferredState state;
-        QQmlComponentPrivate::beginDeferred(ep, object, &state);
+    QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine);
 
-        // Release the reference for the deferral action (we still have one from construction)
-        data->releaseDeferredData();
+    QQmlComponentPrivate::DeferredState state;
+    QQmlComponentPrivate::beginDeferred(ep, object, &state);
 
-        QQmlComponentPrivate::completeDeferred(ep, &state);
-    }
+    // Release the reference for the deferral action (we still have one from construction)
+    data->releaseDeferredData();
+
+    QQmlComponentPrivate::completeDeferred(ep, &state);
 }
 
 QQmlContext *qmlContext(const QObject *obj)