util/symtable.cc
changeset 974 a47c2df5ae3d
parent 973 f86d5d6bb04e
--- a/util/symtable.cc	Fri Dec 26 12:43:13 2014 +0000
+++ b/util/symtable.cc	Fri Dec 26 16:36:06 2014 +0000
@@ -149,9 +149,9 @@
 
 // in the operator[] we delegate to find(), since that method will also search in the inner scopes!
 template<typename value_type>
-typename symtable_c<value_type>::value_t symtable_c<value_type>::operator[] (const       char *identifier_str) {return find(identifier_str)->second;}
-template<typename value_type>
-typename symtable_c<value_type>::value_t symtable_c<value_type>::operator[] (const std::string identifier_str) {return find(identifier_str)->second;}
+typename symtable_c<value_type>::value_t& symtable_c<value_type>::operator[] (const       char *identifier_str) {iterator i = find(identifier_str); return (i!=end())?i->second:_base[identifier_str];}
+template<typename value_type>
+typename symtable_c<value_type>::value_t& symtable_c<value_type>::operator[] (const std::string identifier_str) {iterator i = find(identifier_str); return (i!=end())?i->second:_base[identifier_str];}
 
 
 template<typename value_type>