On tor, 2007-05-31 at 14:29 -0700, Chris Tojza wrote: > Running 5.4.1 pre1 with Red Hat patch Fedora core 7 running on > uname -a > Linux dude 2.6.18-1.2849prerel3.0.0_60.44.0 #1 SMP Wed Apr 11 21:23:08 EDT > 2007 i686 i686 i386 GNU/Linux > > > Valgrind reports peername as leaking: > > ==14039== 48,648 bytes in 3,476 blocks are definitely lost in loss record 136 > of 138 > ==14039== at 0x40044F6: malloc (vg_replace_malloc.c:149) > ==14039== by 0x4371298: SnmpMgr::initSession() (SnmpMgr.C:662) > ==14039== by 0x436E896: SnmpMgr::get(std::string const&, > std::map<std::string, std::string, std::less<std::string>, > std::allocator<std::pair<std::string const, std::string> > >&) (SnmpMgr.C:252) > ==14039== by 0x435CDDD: HostMgr::getSwitchPortInfo(SnmpMgr&, SwitchInv&, > std::string) (HostMgr.C:2085) > ==14039== by 0x4350CB1: HostMgr::snmpGetSwitchInv(std::string const&, > SwitchInv&, std::string) (HostMgr.C:1051) > > > The line 662 in SnmpMgr.C assigns peername to: > struct snmp_session _session; > .................. > _peernameP = (char *) malloc(_ipAddress.length() + 1); > strncpy(_peernameP, _ipAddress.c_str(), _ipAddress.length() + 1); > _session.peername = _peernameP; > > .............. > I do > snmp_sess_close(_sessp); > and > // The fix in my program > // but snmp_sess_close should have deleted peername. > if (_peernameP != NULL) > free(_peernameP); > > --------------------- > snmp_sess_close should have deleted peername. > > What do you think?
I disagree. _session is the argument to the "constructor" snmp_sess_open. _sessP is the new instance that is created by the call. Given this i consider it quite OK that no ownership transfer takes place. The fact that there is no ownership transfer also opens up for the use of string constants in _session. Note that _session could go out of scope just after the call to snmp_sess_open as it have fulfilled it's purpose by then. /MF ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Net-snmp-coders mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
