From: Scott S. <sis...@gm...> - 2009-10-14 05:43:14
|
Turns out this was my fault. I freed a pointer in the wrong scope, which on the next pass was garbage. On Tue, Oct 13, 2009 at 8:35 PM, Scott Sibley <sis...@gm...> wrote: > I had opened a question about this on Stackoverflow. Someone pointed out > that the other value wasn't being checked, but he followed up with the > following comments later on. > > "That's not the problem, however, since other is not null in this case. > Rather it looks like the other object may have been deleted. How are you > managing the lifetimes of the objects in the std::map container? Is it > possible that one of the values was deleted without being removed from the > map?" > > > On Tue, Oct 13, 2009 at 8:27 PM, Scott Sibley <sis...@gm...> wrote: > >> Looks like other.cstr_ should be checked as well. >> >> #0 0x00212bd8 in strcmp () from /lib/libc.so.6 >> #1 0x0012ed2f in Json::Value::CZString::operator< (this=0x8317300, other=@0xbfffeeac) >> >> >> at src/lib_json/json_value.cpp:221 >> #2 0x001361b0 in std::less<Json::Value::CZString>::operator() (this=0x83173a0, __x=@0x8317300, >> __y=@0xbfffeeac) >> >> at /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/stl_function.h:230 >> >> #3 0x00136101 in std::_Rb_tree<Json::Value::CZString, std::pair<Json::Value::CZString const, Json::Value>, std::_Select1st<std::pair<Json::Value::CZString const, Json::Value> >, std::less<Json::Value::CZString>, std::allocator<std::pair<Json::Value::CZString const, Json::Value> > >::_M_lower_bound (this=0x83173a0, >> >> >> __x=0x83172f0, __y=0x83173a4, __k=@0xbfffeeac) >> >> at /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/stl_tree.h:986 >> >> #4 0x001348da in std::_Rb_tree<Json::Value::CZString, std::pair<Json::Value::CZString const, Json::Value>, std::_Select1st<std::pair<Json::Value::CZString const, Json::Value> >, std::less<Json::Value::CZString>, std::allocator<std::pair<Json::Value::CZString const, Json::Value> > >::find (this=0x83173a0, __k=@0xbfffeeac) >> >> >> at /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/stl_tree.h:1421 >> >> #5 0x0013383a in std::map<Json::Value::CZString, Json::Value, std::less<Json::Value::CZString>, std::allocator<std::pair<Json::Value::CZString const, Json::Value> > >::find (this=0x83173a0, __x=@0xbfffeeac) >> >> >> at /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/stl_map.h:659 >> >> #6 0x00131779 in Json::Value::operator[] (this=0x8317280, key=0xbfffef74 "col1") >> at src/lib_json/json_value.cpp:1055 >> >> #7 0x00131ba8 in Json::Value::isMember (this=0x8317280, key=0xbfffef74 "col1") >> at src/lib_json/json_value.cpp:1169 >> >> #8 0x0805cf4d in CFG::CFG_Fetch_Raw (this=0x825846c, section=0x8317280, key=0xbfffef74 "col1", defval=0x0) >> at CFG.cpp:48 >> >> #9 0x08050e5b in Generic::CFGSetup (this=0x825846c, k=0x8255e2c "display_qt") at Generic.cpp:89 >> #10 0x0804df6a in LCDControl::ConfigSetup (this=0xbffff2a8) at LCDControl.cpp:81 >> >> #11 0x0804d93b in LCDControl::Start (this=0xbffff2a8, argc=1, argv=0xbffff404) at LCDControl.cpp:15 >> #12 0x0804f224 in main (argc=1, argv=0xbffff404) at Main.cpp:7 >> >> >> bool >> Value::CZString::operator<( const CZString &other ) const >> >> { >> if ( cstr_ ) >> >> return strcmp( cstr_, other.cstr_ ) < 0; //src/lib_json/json_value.cpp:221 >> >> >> return index_ < other.index_; >> } >> >> > |