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 | a3e657064bd4d1fea302860c474c28a0372e99f6 (patch) | |
tree | 3cabd09fa92d39bdd40cafa22d0ec9c3fe1d5080 /clang/lib/Basic/Version.cpp | |
parent | 29a9103ee6e51ea58137a8ececab47bac81755e3 (diff) | |
download | bcm5719-llvm-a3e657064bd4d1fea302860c474c28a0372e99f6.tar.gz bcm5719-llvm-a3e657064bd4d1fea302860c474c28a0372e99f6.zip |
Make the following functions thread-safe but having them return an std::string that is reconstructed
every time they are called:
getClangRevision()
getClangFullRepositoryVersion()
getClangFullVersion()
llvm-svn: 96033
Diffstat (limited to 'clang/lib/Basic/Version.cpp')
-rw-r--r-- | clang/lib/Basic/Version.cpp | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp index f9d62f9dc7c..0c81fdd0756 100644 --- a/clang/lib/Basic/Version.cpp +++ b/clang/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 |