From 702909372d33ca269422d011e9156982d0e6f0e5 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 10 May 2010 10:11:05 +0200 Subject: [PATCH] Store the Control. It seems that storing the TranslationUnit together with the Symbol was a bad idea. Unfortunately, we release TranslationUnit(s) as soon as we can, but we keep the Control around. So using the Control is definitely safer. --- src/shared/cplusplus/Symbol.cpp | 11 +++-------- src/shared/cplusplus/Symbol.h | 9 +++++---- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/shared/cplusplus/Symbol.cpp b/src/shared/cplusplus/Symbol.cpp index 6c506c1700c..93725ee2246 100644 --- a/src/shared/cplusplus/Symbol.cpp +++ b/src/shared/cplusplus/Symbol.cpp @@ -161,7 +161,7 @@ private: }; Symbol::Symbol(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name) - : _translationUnit(translationUnit), + : _control(translationUnit->control()), _sourceLocation(sourceLocation), _sourceOffset(0), _startOffset(0), @@ -183,15 +183,10 @@ Symbol::~Symbol() { } Control *Symbol::control() const -{ - if (_translationUnit) - return _translationUnit->control(); - - return 0; -} +{ return _control; } TranslationUnit *Symbol::translationUnit() const -{ return _translationUnit; } +{ return _control->translationUnit(); } void Symbol::visitSymbol(SymbolVisitor *visitor) { diff --git a/src/shared/cplusplus/Symbol.h b/src/shared/cplusplus/Symbol.h index f45ce88c0c4..628261b4b9a 100644 --- a/src/shared/cplusplus/Symbol.h +++ b/src/shared/cplusplus/Symbol.h @@ -87,9 +87,6 @@ public: /// Destroy this Symbol. virtual ~Symbol(); - /// Returns this Symbol's Control object. - Control *control() const; - /// Returns this Symbol's source location. unsigned sourceLocation() const; @@ -323,10 +320,14 @@ public: protected: virtual void visitSymbol0(SymbolVisitor *visitor) = 0; + /// Returns this Symbol's Control object. + Control *control() const; + + /// Returns this Symbol's TranslationUnit. TranslationUnit *translationUnit() const; private: - TranslationUnit *_translationUnit; + Control *_control; unsigned _sourceLocation; unsigned _sourceOffset; unsigned _startOffset; -- GitLab