aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Weickelt <richard@weickelt.de>2020-07-08 23:48:32 +0200
committerRichard Weickelt <richard@weickelt.de>2020-07-13 22:25:42 +0000
commit91ca67815af4512004d11a582753d4e6980e2004 (patch)
treee51f6d2fa4ba253db4b8f716e60e625add95f190
parent09401f5eab3f5c8955e85baf3c98f79fbc03d8b1 (diff)
Fix wrong array iteration
It is not recommended to use 'for in' loops to iterate over arrays because additional properties in Array.prototype would be iterated over as well. For unknown reasons this is not the case when using QtScript, but it would be a problem when running on QJSEngine. Change-Id: I4404c03a6277dae471a9beb162b539edb9ace426 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r--share/qbs/imports/qbs/ModUtils/utils.js2
-rw-r--r--share/qbs/modules/java/utils.js9
-rw-r--r--tests/auto/blackbox/testdata/dynamic-project/dynamic-project.qbs2
3 files changed, 6 insertions, 7 deletions
diff --git a/share/qbs/imports/qbs/ModUtils/utils.js b/share/qbs/imports/qbs/ModUtils/utils.js
index 502fa1e45..507e68088 100644
--- a/share/qbs/imports/qbs/ModUtils/utils.js
+++ b/share/qbs/imports/qbs/ModUtils/utils.js
@@ -408,7 +408,7 @@ var PropertyValidator = (function () {
errorMessage += "The following properties have invalid values:\n";
lines = [];
for (i in invalidProperties) {
- for (j in invalidProperties[i]) {
+ for (j = 0; j < invalidProperties[i].length; ++j) {
lines.push(this.moduleName + "." + i + ": " + invalidProperties[i][j]);
}
}
diff --git a/share/qbs/modules/java/utils.js b/share/qbs/modules/java/utils.js
index 0e11b7d3e..520511192 100644
--- a/share/qbs/modules/java/utils.js
+++ b/share/qbs/modules/java/utils.js
@@ -74,10 +74,9 @@ function jdkRootRegistryKey(wow64) {
function findJdkPath(hostOS, arch, environmentPaths, searchPaths) {
var i;
- for (var key in environmentPaths) {
- if (environmentPaths[key]) {
- return environmentPaths[key];
- }
+ for (i = 0; i < environmentPaths.length; ++i) {
+ if (environmentPaths[i])
+ return environmentPaths[i];
}
if (hostOS.contains("windows")) {
@@ -347,7 +346,7 @@ function manifestContents(filePath) {
if (contents) {
var dict = {};
var lines = contents.split(/\r?\n/g).filter(function (line) { return line.length > 0; });
- for (var i in lines) {
+ for (var i = 0; i < lines.length; ++i) {
var kv = lines[i].split(":");
if (kv.length !== 2)
throw new Error("Syntax error in manifest file '"
diff --git a/tests/auto/blackbox/testdata/dynamic-project/dynamic-project.qbs b/tests/auto/blackbox/testdata/dynamic-project/dynamic-project.qbs
index 166648c80..52f7c940d 100644
--- a/tests/auto/blackbox/testdata/dynamic-project/dynamic-project.qbs
+++ b/tests/auto/blackbox/testdata/dynamic-project/dynamic-project.qbs
@@ -17,7 +17,7 @@ Project
var srcDir = FileInfo.joinPaths(sourceDir, "src");
var projectDirs = File.directoryEntries(srcDir, File.Dirs | File.NoDotAndDotDot);
var list = [];
- for (it in projectDirs) {
+ for (var it = 0; it < projectDirs.length; ++it) {
var name = projectDirs[it];
var productSrcDir = FileInfo.joinPaths(srcDir, name);
var productFilePath = FileInfo.joinPaths(tempDir, name + ".qbs");