From b0618281ecaa71a99dea7235c3c955b2135cc127 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Mon, 24 Mar 2014 16:06:39 +0100 Subject: C++: Do type and name equality checking in a safe manner. Change the TypeMatcher to also match names, and use two "block" lists in SafeMatcher to prevent infinite recursion. Task-number: QTCREATORBUG-11240 Change-Id: I0367ae795ee6be579b83aeb8d46723c877e4aa75 Reviewed-by: Nikolai Kosjar --- src/libs/cplusplus/AlreadyConsideredClassContainer.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/libs/cplusplus/AlreadyConsideredClassContainer.h') diff --git a/src/libs/cplusplus/AlreadyConsideredClassContainer.h b/src/libs/cplusplus/AlreadyConsideredClassContainer.h index 4ada3866c4..cc819ab80a 100644 --- a/src/libs/cplusplus/AlreadyConsideredClassContainer.h +++ b/src/libs/cplusplus/AlreadyConsideredClassContainer.h @@ -1,6 +1,8 @@ #ifndef CPLUSPLUS_ALREADYCONSIDEREDCLASSCONTAINER_H #define CPLUSPLUS_ALREADYCONSIDEREDCLASSCONTAINER_H +#include + #include namespace CPlusPlus { @@ -21,8 +23,9 @@ public: if (_container.contains(item)) return true; + SafeMatcher matcher; foreach (const T *existingItem, _container) { - if (existingItem->isEqualTo(item)) + if (Matcher::match(existingItem, item, &matcher)) return true; } -- cgit v1.2.1