summaryrefslogtreecommitdiff
path: root/src/plugins/cppeditor/cppquickfixes.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-10-14 15:47:07 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-10-17 12:04:42 +0200
commitd808ebed888891d41173876122f2178023880580 (patch)
tree3d53f5a97540162cb356ce04033c16a4f58e296a /src/plugins/cppeditor/cppquickfixes.cpp
parentc79a605b8f487db2ab5e194b50f44345b649a15e (diff)
downloadqt-creator-d808ebed888891d41173876122f2178023880580.tar.gz
CppEditor: Fix crash in CompleteSwitchCaseStatement
Task-number: QTCREATORBUG-10366 Change-Id: I6d5af5e7a59f3867141c8d7f098128d3db532ee5 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cppeditor/cppquickfixes.cpp')
-rw-r--r--src/plugins/cppeditor/cppquickfixes.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp
index dcdd879686..6956cb9c78 100644
--- a/src/plugins/cppeditor/cppquickfixes.cpp
+++ b/src/plugins/cppeditor/cppquickfixes.cpp
@@ -2295,9 +2295,16 @@ Enum *findEnum(const QList<LookupItem> &results, const LookupContext &ctxt)
if (Enum *e = type->asEnumType())
return e;
if (const NamedType *namedType = type->asNamedType()) {
- const QList<LookupItem> candidates =
- ctxt.lookup(namedType->name(), result.scope());
- return findEnum(candidates, ctxt);
+ if (ClassOrNamespace *con = ctxt.lookupType(namedType->name(), result.scope())) {
+ const QList<Enum *> enums = con->unscopedEnums();
+ const Name *referenceName = namedType->name();
+ foreach (Enum *e, enums) {
+ if (const Name *candidateName = e->name()) {
+ if (candidateName->isEqualTo(referenceName))
+ return e;
+ }
+ }
+ }
}
}