diff options
| author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-07-17 05:55:42 +0900 |
|---|---|---|
| committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-07-17 05:55:49 +0900 |
| commit | ba2ccdb7c84374e2f61e43d531a8f96da92da5ed (patch) | |
| tree | 0040d2982f479ddf61845334578774e06da33da1 /symtab.cc | |
| parent | af9887a8175386d1980e11cc3d22e59deb7f86bc (diff) | |
Revert "Revert "[C++] Fix Symtab on MacOSX""
This reverts commit 312e2d27378c47c263e83f0993f1cf67ef4c4235.
I have accidentally reverted the change
Diffstat (limited to 'symtab.cc')
| -rw-r--r-- | symtab.cc | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -23,7 +23,7 @@ #include "log.h" #include "strutil.h" -vector<string>* g_symbols; +vector<string*>* g_symbols; Symbol kEmptySym = Symbol(Symbol::IsUninitialized()); Symbol kShellSym = Symbol(Symbol::IsUninitialized()); @@ -53,14 +53,19 @@ class Symtab { kShellSym = Intern("SHELL"); } + ~Symtab() { + for (string* s : symbols_) + delete s; + } + Symbol InternImpl(StringPiece s) { auto found = symtab_.find(s); if (found != symtab_.end()) { return found->second; } - symbols_.push_back(s.as_string()); + symbols_.push_back(new string(s.data(), s.size())); Symbol sym = Symbol(symtab_.size()); - bool ok = symtab_.emplace(symbols_.back(), sym).second; + bool ok = symtab_.emplace(*symbols_.back(), sym).second; CHECK(ok); return sym; } @@ -74,7 +79,7 @@ class Symtab { private: unordered_map<StringPiece, Symbol> symtab_; - vector<string> symbols_; + vector<string*> symbols_; }; static Symtab* g_symtab; |
