diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2023-07-24 10:23:04 +0200 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-07-24 11:17:28 +0200 |
| commit | 1d36f0f2bd40b9ce5aeed2c525fe863bc36e0289 (patch) | |
| tree | 7cd878681b371875bc60b38e8982165139993940 /src/qmlcompiler/qqmljsbasicblocks.cpp | |
| parent | deaa1bf54d0f55715a9a9ac498f5f5f48d378e83 (diff) | |
QmlCompiler: Avoid dereferencing past-end iterator
Coverity-Id: 415935
Change-Id: I5871c6aaa0985b7b36913aa27434e55a50245677
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qmlcompiler/qqmljsbasicblocks.cpp')
| -rw-r--r-- | src/qmlcompiler/qqmljsbasicblocks.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/qmlcompiler/qqmljsbasicblocks.cpp b/src/qmlcompiler/qqmljsbasicblocks.cpp index 95e7ca8d55..461b47e3b9 100644 --- a/src/qmlcompiler/qqmljsbasicblocks.cpp +++ b/src/qmlcompiler/qqmljsbasicblocks.cpp @@ -37,10 +37,6 @@ void QQmlJSBasicBlocks::dumpBasicBlocks() void QQmlJSBasicBlocks::dumpDOTGraph() { - auto isBackEdge = [](const BasicBlock &originBlock, int originOffset, int destinationOffset) { - return originOffset > destinationOffset && originBlock.jumpIsUnconditional; - }; - QString output; QTextStream s{ &output }; s << "=== Basic Blocks Graph in DOT format for \"%1\" (spaces are encoded as" @@ -52,15 +48,17 @@ void QQmlJSBasicBlocks::dumpDOTGraph() for (int originOffset : block.jumpOrigins) { int originBlockOffset; auto originBlockIt = blocks.find(originOffset); - if (originBlockIt != blocks.end()) + bool isBackEdge = false; + if (originBlockIt != blocks.end()) { originBlockOffset = originOffset; - else + isBackEdge = originOffset > blockOffset + && originBlockIt->second.jumpIsUnconditional; + } else { originBlockOffset = std::prev(blocks.lower_bound(originOffset))->first; + } s << " %1 -> %2%3\n"_L1.arg(QString::number(originBlockOffset)) .arg(QString::number(blockOffset)) - .arg(isBackEdge(originBlockIt->second, originOffset, blockOffset) - ? " [color=blue]"_L1 - : ""_L1); + .arg(isBackEdge ? " [color=blue]"_L1 : ""_L1); } } |
