1 |
commit: 2d27dd160050b05cb4309a7eeec4bde936079033 |
2 |
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Apr 4 08:53:30 2011 +0000 |
4 |
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Apr 4 15:57:03 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=2d27dd16 |
7 |
|
8 |
Fix a bug in resolving non-exist symbols |
9 |
|
10 |
We should return an empty shared_ptr if the symbol doesn't exist. |
11 |
|
12 |
--- |
13 |
src/core/symbols.hpp | 3 ++- |
14 |
src/core/tests/symbols_test.cpp | 1 + |
15 |
2 files changed, 3 insertions(+), 1 deletions(-) |
16 |
|
17 |
diff --git a/src/core/symbols.hpp b/src/core/symbols.hpp |
18 |
index a4ae514..8734548 100644 |
19 |
--- a/src/core/symbols.hpp |
20 |
+++ b/src/core/symbols.hpp |
21 |
@@ -252,7 +252,8 @@ public: |
22 |
/// \return target symbol passed by reference |
23 |
std::shared_ptr<symbol> resolve(const std::string& name) |
24 |
{ |
25 |
- return members[name]; |
26 |
+ auto iter = members.find(name); |
27 |
+ return (iter == members.end()? std::shared_ptr<symbol>() : iter->second); |
28 |
} |
29 |
protected: |
30 |
/// \var protected::member |
31 |
|
32 |
diff --git a/src/core/tests/symbols_test.cpp b/src/core/tests/symbols_test.cpp |
33 |
index 7620be0..73a6a9c 100644 |
34 |
--- a/src/core/tests/symbols_test.cpp |
35 |
+++ b/src/core/tests/symbols_test.cpp |
36 |
@@ -80,4 +80,5 @@ TEST(scope_test, define_resolve) |
37 |
auto an_int = shared_ptr<variable>(new variable("integer_symbol", 100)); |
38 |
members.define(an_int); |
39 |
EXPECT_EQ(an_int, members.resolve("integer_symbol")); |
40 |
+ EXPECT_FALSE(members.resolve("not exist")); |
41 |
} |