diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-02-12 22:54:40 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-02-12 22:54:40 +0000 |
commit | a2a9d6e4e5b6001b86b7dfc5db1ea296ce29a3d3 (patch) | |
tree | 3ad4e855afd9356c2e8b5f395a7b6a376f8be45d /lib/Basic/Version.cpp | |
parent | 36ead2e992abb30aa3b4a40b4c8cb22cc9389fef (diff) |
Make the following functions thread-safe but having them return an std::string that is reconstructed
every time they are called:
getClangRevision()
getClangFullRepositoryVersion()
getClangFullVersion()
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96033 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/Version.cpp')
-rw-r--r-- | lib/Basic/Version.cpp | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index f9d62f9dc7..0c81fdd075 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -39,44 +39,37 @@ llvm::StringRef getClangRepositoryPath() { return llvm::StringRef(URL, URLEnd - URL); } - -llvm::StringRef getClangRevision() { +std::string getClangRevision() { #ifndef SVN_REVISION // Subversion was not available at build time? - return llvm::StringRef(); + return ""; #else - static std::string revision; - if (revision.empty()) { - llvm::raw_string_ostream OS(revision); - OS << strtol(SVN_REVISION, 0, 10); - } + std::string revision; + llvm::raw_string_ostream OS(revision); + OS << strtol(SVN_REVISION, 0, 10); return revision; #endif } -llvm::StringRef getClangFullRepositoryVersion() { - static std::string buf; - if (buf.empty()) { - llvm::raw_string_ostream OS(buf); - OS << getClangRepositoryPath(); - llvm::StringRef Revision = getClangRevision(); - if (!Revision.empty()) - OS << ' ' << Revision; - } +std::string getClangFullRepositoryVersion() { + std::string buf; + llvm::raw_string_ostream OS(buf); + OS << getClangRepositoryPath(); + llvm::StringRef Revision = getClangRevision(); + if (!Revision.empty()) + OS << ' ' << Revision; return buf; } -const char *getClangFullVersion() { - static std::string buf; - if (buf.empty()) { - llvm::raw_string_ostream OS(buf); +std::string getClangFullVersion() { + std::string buf; + llvm::raw_string_ostream OS(buf); #ifdef CLANG_VENDOR - OS << CLANG_VENDOR; + OS << CLANG_VENDOR; #endif - OS << "clang version " CLANG_VERSION_STRING " (" - << getClangFullRepositoryVersion() << ')'; - } - return buf.c_str(); + OS << "clang version " CLANG_VERSION_STRING " (" + << getClangFullRepositoryVersion() << ')'; + return buf; } - + } // end namespace clang |