diff --git a/src/shared/cplusplus/Symbol.cpp b/src/shared/cplusplus/Symbol.cpp
index fa2d00f31628a1adcceb041612ea1d0c17c6f862..63672f13c0064e91cb9056eaafa5861de0bd7d03 100644
--- a/src/shared/cplusplus/Symbol.cpp
+++ b/src/shared/cplusplus/Symbol.cpp
@@ -209,18 +209,17 @@ void Symbol::setDeprecated(bool isDeprecated)
 void Symbol::setSourceLocation(unsigned sourceLocation, TranslationUnit *translationUnit)
 {
     _sourceLocation = sourceLocation;
-    unsigned offset = 0;
 
-    if (! _sourceLocation) {
-        _isGenerated = false;
-
-    } else {
+    if (translationUnit) {
         const Token &tk = translationUnit->tokenAt(sourceLocation);
         _isGenerated = tk.f.generated;
-        offset = tk.offset;
+        translationUnit->getPosition(tk.offset, &_line, &_column, &_fileId);
+    } else {
+        _isGenerated = false;
+        _line = 0;
+        _column = 0;
+        _fileId = 0;
     }
-
-    translationUnit->getPosition(offset, &_line, &_column, &_fileId);
 }
 
 unsigned Symbol::line() const