From 694326a3ba5547556072afc3c0f63c29e311bc9b Mon Sep 17 00:00:00 2001 From: Luciano Wolf Date: Wed, 28 Jul 2010 14:22:12 -0300 Subject: Fix wrong behaviour of topological sort. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When dealing with repeated and unordered classes it can generate an invalid result array. Reviewer: Renato Araújo Marcelo Lira --- abstractmetabuilder.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index b02a60fbb..6bfee26cc 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -2668,15 +2668,17 @@ AbstractMetaClassList AbstractMetaBuilder::classesTopologicalSorted(const Abstra const AbstractMetaClassList& classList = cppClass ? cppClass->innerClasses() : m_metaClasses; - Graph graph(classList.count()); - int i = 0; foreach (AbstractMetaClass* clazz, classList) { + if (map.contains(clazz->qualifiedCppName())) + continue; map[clazz->qualifiedCppName()] = i; reverseMap[i] = clazz; i++; } + Graph graph(map.count()); + // TODO choose a better name to these regexs QRegExp regex1("\\(.*\\)"); QRegExp regex2("::.*"); -- cgit v1.2.3