From 35b4420f7ad4634d653cbdd44b563ce8da53d205 Mon Sep 17 00:00:00 2001
From: Nikolai Kosjar <nikolai.kosjar@digia.com>
Date: Thu, 14 Feb 2013 14:25:31 +0100
Subject: [PATCH] Editor: Add further Use::isInvalid() guards

Task-number: QTCREATORBUG-8738

Change-Id: I297731f15bd9001f7edc83c956a15ef660929dc7
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
---
 src/plugins/cppeditor/cppfunctiondecldeflink.cpp | 2 ++
 src/plugins/cppeditor/cppinsertdecldef.cpp       | 3 +++
 src/plugins/cpptools/cppchecksymbols.cpp         | 2 +-
 src/plugins/cpptools/cppchecksymbols.h           | 4 ++--
 4 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/plugins/cppeditor/cppfunctiondecldeflink.cpp b/src/plugins/cppeditor/cppfunctiondecldeflink.cpp
index 0a17c83053d..7d1764ac521 100644
--- a/src/plugins/cppeditor/cppfunctiondecldeflink.cpp
+++ b/src/plugins/cppeditor/cppfunctiondecldeflink.cpp
@@ -913,6 +913,8 @@ Utils::ChangeSet FunctionDeclDefLink::changes(const Snapshot &snapshot, int targ
                 it.next();
                 const QList<SemanticInfo::Use> &uses = localSymbols.uses.value(it.key());
                 foreach (const SemanticInfo::Use &use, uses) {
+                    if (use.isInvalid())
+                        continue;
                     const int useStart = targetFile->position(use.line, use.column);
                     if (useStart <= endOfArguments)
                         continue;
diff --git a/src/plugins/cppeditor/cppinsertdecldef.cpp b/src/plugins/cppeditor/cppinsertdecldef.cpp
index cf534e9d21b..6f0ce466040 100644
--- a/src/plugins/cppeditor/cppinsertdecldef.cpp
+++ b/src/plugins/cppeditor/cppinsertdecldef.cpp
@@ -1096,6 +1096,9 @@ void ExtractFunction::match(const CppQuickFixInterface &interface, QuickFixOpera
         bool usedInsideExtraction = false;
         const QList<SemanticInfo::Use> &uses = it.value();
         foreach (const SemanticInfo::Use &use, uses) {
+            if (use.isInvalid())
+                continue;
+
             const int position = file->position(use.line, use.column);
             if (position < analyser.m_extractionStart)
                 usedBeforeExtraction = true;
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index c8245a0881a..c6283ed2e45 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -1104,7 +1104,7 @@ static const int chunkSize = 50;
 
 void CheckSymbols::addUse(const Use &use)
 {
-    if (!use.line)
+    if (use.isInvalid())
         return;
 
     if (! enclosingFunctionDefinition()) {
diff --git a/src/plugins/cpptools/cppchecksymbols.h b/src/plugins/cpptools/cppchecksymbols.h
index ce8e9fecb0f..8b1694aed25 100644
--- a/src/plugins/cpptools/cppchecksymbols.h
+++ b/src/plugins/cpptools/cppchecksymbols.h
@@ -79,8 +79,8 @@ public:
 
         for (int i = from; i < to; ++i) {
             const Use use = future.resultAt(i);
-            if (! use.line)
-                continue; // skip it, it's an invalid use.
+            if (use.isInvalid())
+                continue;
 
             const int blockNumber = use.line - 1;
             chunks[blockNumber].append(use);
-- 
GitLab