Opened 9 years ago
Last modified 9 years ago
#9830 new Bugs
memory leak in time_duration
Reported by: | Owned by: | az_sw_dude | |
---|---|---|---|
Milestone: | To Be Determined | Component: | date_time |
Version: | Boost 1.54.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Hi folks, this is a leak i've found compiling this very single line: boost::posix_time::time_duration td(1,0,0,0); cout << td;
valgrind reports the following leak: ==16902== 25 bytes in 1 blocks are possibly lost in loss record 21 of 29 ==16902== at 0x40290AC: operator new(unsigned int) (vg_replace_malloc.c:313) ==16902== by 0x455BB54: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x455CC72: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x455CD10: std::string::reserve(unsigned int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x455CF8C: std::string::append(char const*, unsigned int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x8079DE9: boost::date_time::time_facet<boost::posix_time::ptime, char, std::ostreambuf_iterator<char, std::char_traits<char> > >::time_facet(unsigned int) (in /home/marcos/release/sandbox/chutaygol) ==16902== by 0x8084086: std::basic_ostream<char, std::char_traits<char> >& boost::posix_time::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, boost::posix_time::time_duration const&)
I hope you find a bug with the help of my report Marcos Mayorga
Change History (2)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
probably line 193 of posix_time_io.hpp
188 //instantiate a custom facet for dealing with times since the user 189 //has not put one in the stream so far. This is for efficiency 190 //since we would always need to reconstruct for every time period 191 //if the locale did not already exist. Of course this will be overridden 192 //if the user imbues as some later point. 193 custom_ptime_facet* f = new custom_ptime_facet(); 194 std::locale l = std::locale(os.getloc(), f); 195 os.imbue(l); 196 f->put(oitr, os, os.fill(), td);
Valgrind's backtrace of the leak: