diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp
index a004df02e701040daf63eba5b85ef2b9c423174a..3a9ad4b093ed0c15b1545f729c1c51f7fd6e344a 100644
--- a/src/plugins/cppeditor/cpphoverhandler.cpp
+++ b/src/plugins/cppeditor/cpphoverhandler.cpp
@@ -60,6 +60,8 @@
 #include <QtGui/QToolTip>
 #include <QtGui/QTextCursor>
 
+#include <algorithm>
+
 using namespace CppEditor::Internal;
 using namespace CPlusPlus;
 using namespace Core;
@@ -95,11 +97,14 @@ namespace {
                 const QList<Symbol *> &symbols = baseClass->symbols();
                 foreach (Symbol *baseSymbol, symbols) {
                     if (baseSymbol->isClass()) {
-                        hierarchy->back().append(overview.prettyName(
-                            LookupContext::fullyQualifiedName(baseSymbol)));
-                        buildClassHierarchyHelper(baseSymbol, context, overview, hierarchy);
-                        hierarchy->append(hierarchy->back());
-                        hierarchy->back().removeLast();
+                        const QString &qualifiedName = overview.prettyName(
+                                LookupContext::fullyQualifiedName(baseSymbol));
+                        if (!qualifiedName.isEmpty()) {
+                            hierarchy->back().append(qualifiedName);
+                            buildClassHierarchyHelper(baseSymbol, context, overview, hierarchy);
+                            hierarchy->append(hierarchy->back());
+                            hierarchy->back().removeLast();
+                        }
                     }
                 }
             }
@@ -476,6 +481,10 @@ void CppHoverHandler::generateDiagramTooltip(const bool extendTooltips)
 
     qSort(m_classHierarchy.begin(), m_classHierarchy.end(), ClassHierarchyComp());
 
+    // Remove duplicates (in case there are any).
+    m_classHierarchy.erase(std::unique(m_classHierarchy.begin(), m_classHierarchy.end()),
+                           m_classHierarchy.end());
+
     QStringList directBaseClasses;
     foreach (const QStringList &hierarchy, m_classHierarchy) {
         if (hierarchy.size() > 1)