OSDN Git Service

Code model: Fix endless loop in AbstractEditorSupport::functionAt
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 22 Nov 2010 14:08:15 +0000 (15:08 +0100)
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 22 Nov 2010 14:10:20 +0000 (15:10 +0100)
used by CDB debugger tooltip (introduced by
 A 354b9712e4655040930a9f18de4e6b4c71dc42d9).

Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
Rubber-stamped-by: dt
src/plugins/cpptools/abstracteditorsupport.cpp

index e29f45f..e8f42be 100644 (file)
@@ -73,17 +73,14 @@ QString AbstractEditorSupport::functionAt(const CppModelManagerInterface *modelM
                     const CPlusPlus::Overview o;
                     QString rc = o.prettyName(function->name());
                     // Prepend namespace "Foo::Foo::foo()" up to empty root namespace
-                    for (const CPlusPlus::Symbol *owner = function; ; ) {
-                        if (const CPlusPlus::Scope *nameSpace = owner->enclosingNamespace()) {
-                            const QString name = o.prettyName(nameSpace->name());
-                            if (name.isEmpty()) {
-                                break;
-                            } else {
-                                rc.prepend(QLatin1String("::"));
-                                rc.prepend(name);
-                            }
-                        } else {
+                    for (const CPlusPlus::Symbol *owner = function->enclosingNamespace();
+                         owner; owner = owner->enclosingNamespace()) {
+                        const QString name = o.prettyName(owner->name());
+                        if (name.isEmpty()) {
                             break;
+                        } else {
+                            rc.prepend(QLatin1String("::"));
+                            rc.prepend(name);
                         }
                     }
                     return rc;