Hello all, I've pretty much got my variant working, but I'm having a bit of an issue. When I call AddVar, with the below code: mobile->AddVar("str", 1); addvar looks like: template <class T> BOOL AddVar(const std::string &name, T val) { std::cout << "Adding " << name << " with value " << val << "." << std::endl; if (VarExists(name)) { std::cout << "Var exists!" << std::endl; return false; } (*_vars)[name]=val; return true; } now I see the cout statement being ran, and the value looks fine. but the program segfaults in VarExists. Well, it segfaults in the guts of the stl lib. VarExists looks like: BOOL Entity::VarExists(const std::string &name) const { return (_vars->count(name)); } and the backtrace from gdb: #0 0x08055da7 in std::_Rb_tree<std::string, std::pair<std::string const, Variant>, std::_Select1st<std::pair<std::string const, Var iant> >, std::less<std::string>, std::allocator<std::pair<std::string const, Variant> > >::find (this=0x0, __k=...) at /usr/include/c++/4.4/bits/stl_tree.h:1434 #1 0x08052575 in std::map<std::string, Variant, std::less<std::string>, std::allocator<std::pair<std::string const, Variant> > >::c ount (this=0x808d208, name=...) at /usr/include/c++/4.4/bits/stl_map.h:686 #2 Entity::VarExists (this=0x808d208, name=...) at entity.cpp:318 #3 0x0807af83 in Entity::AddVar<int> (this=0x808d208, name=..., val=1) at components/../entity.h:126 #4 0x0807ac0f in STATS_ATTACHED (args=0x0, caller=0x808d208) at components/stats.cpp:29 #5 0x080651c9 in Event::Invoke (this=0x808d348, args=0x0, caller=0x808d208) at event.cpp:35 #6 0x080659e2 in EventManager::CallEvent (this=0x808d20c, name=..., args=0x0, caller=0x808d208) at event.cpp:143 #7 0x0806910d in Component::Attach (this=0x808d208, obj=0x808cac8) at component.cpp:55 #8 0x08053974 in Entity::AddComponent (this=0x808cac8, component=0x808d208) at entity.cpp:265 #9 0x0807a4e5 in STATS_ADD (args=0x0, caller=0x808cac8) at components/stats.cpp:40 #10 0x080651c9 in Event::Invoke (this=0x808b690, args=0x0, caller=0x808cac8) at event.cpp:35 #11 0x080659e2 in EventManager::CallEvent (this=0x8089008, name=..., args=0x0, caller=0x808cac8) at event.cpp:143 #12 0x0805f359 in Server::PollSockets (this=0x8089070) at server.cpp:273 #13 0x0804b409 in World::Update (this=0x8089008) at world.cpp:224 #14 0x0805f53c in GameLoop () at main.cpp:180 #15 0x08060221 in main (argc=1, argv=0xbffff404) at main.cpp:121 Only thing I can think of is a corrupt _vars, but this shows that that's not the case: (gdb) up #1 0x08052575 in std::map<std::string, Variant, std::less<std::string>, std::allocator<std::pair<std::string const, Variant> > >::c ount (this=0x808d208, name=...) at /usr/include/c++/4.4/bits/stl_map.h:686 686 { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } (gdb) up #2 Entity::VarExists (this=0x808d208, name=...) at entity.cpp:318 318 return (_vars->count(name)); (gdb) print _vars $1 = ( std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Variant, std::less<std::basic_string<char, std: :char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocato r<char> > const, Variant> > > *) 0x0 (gdb) so I'm totally lost. Any help would be awesome. Thanks,