Review: Disapprove

Unfortunately, these fixes are wrong. cpp is wrong about there being a memory 
leak, but it hardly is to blame. 


Back in the days, we decided it was a good idea to let Panels manage the memory 
of their children (not a terrible idea, but it leads to confusing code now). In 
the constructor of Panel::Panel, the parent gets the child added to its list of 
children. In Panel::~Panel we call free_children() which deletes all children. 
Having the children non-pointers (like you did in this change) means that the 
delete calls will delete unmanaged memory - that is undefined behavior and 
could lead to crashes.

So the proper fix would be to change panel to actually hold std::unique_ptr<> 
to the children so that the ownership is clear. But that is a bit more involved 
to change. 
-- 
https://code.launchpad.net/~widelands-dev/widelands/bug-986611-cppcheck_memleak/+merge/300979
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/bug-986611-cppcheck_memleak.

_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to