Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.5
-
ec58c0ddb (dev), 20374ccf7 (6.5), 3d924d59d (dev), 09003edcc (6.5)
Description
If you read from and write to the same value type list property in a QML function, the interpreter will probably update any "references" to the list as soon as it's written to, but the compiler will create a true copy of the list, that doesn't get updated.
This may be the same for any value type. We may need to invalidate any possible references whenever an operation with potential side effects takes place.
This produces NaN when interpreted and a number when aot-compiled.
property list<double> numbers: { var result = []; for (var i = 0; i < Categorizer.Length; ++i) result[i] = randomNumber(); return result; } function evil() : double { var numbers = root.numbers; var a = 0; for (var j = 0; j < Categorizer.Length; ++j) { a += numbers[j]; root.numbers = [a, a, a] } return a; }