Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix memory leak in single-player difficulty selection
Single-player difficulty selection was implemented in a very hacky way. Documents what's going on there and fixes a memory leak. Memory leaks that this fixes looked like this: ``` Direct leak of 64 byte(s) in 1 object(s) allocated from: #0 0x7f435b789f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17) #1 0x5567766c62b8 in dvl::selgame_GameSelection_Select(int) ../SourceX/DiabloUI/selgame.cpp:163 #2 0x5567766d8ee8 in dvl::selhero_Load_Select(int) ../SourceX/DiabloUI/selhero.cpp:464 #3 0x5567766d6ed1 in dvl::selhero_List_Select(int) ../SourceX/DiabloUI/selhero.cpp:325 #4 0x556776692683 in dvl::UiFocusNavigationSelect() ../SourceX/DiabloUI/diabloui.cpp:396 #5 0x55677669158e in HandleMenuAction ../SourceX/DiabloUI/diabloui.cpp:223 #6 0x5567766917b9 in dvl::UiFocusNavigation(SDL_Event*) ../SourceX/DiabloUI/diabloui.cpp:277 #7 0x556776695dff in dvl::UiPollAndRender() ../SourceX/DiabloUI/diabloui.cpp:626 #8 0x5567766d94ef in UiSelHeroDialog ../SourceX/DiabloUI/selhero.cpp:512 #9 0x5567766d997f in dvl::UiSelHeroSingDialog(int (*)(int (*)(dvl::_uiheroinfo*)), int (*)(dvl::_uiheroinfo*), int (*)(dvl::_uiheroinfo*), void (*)(unsigned int, dvl::_uidefaultstats*), int*, char (*) [16], int*) ../SourceX/DiabloUI/selhero.cpp:547 #10 0x556776a44f45 in mainmenu_select_hero_dialog ../Source/mainmenu.cpp:98 #11 0x5567765f9f15 in SNetInitializeProvider ../SourceX/storm/storm_net.cpp:102 #12 0x556776c996b9 in multi_init_single ../Source/multi.cpp:826 #13 0x556776c98b1e in NetInit ../Source/multi.cpp:770 #14 0x5567767d0c0b in StartGame ../Source/diablo.cpp:375 #15 0x556776a4493d in mainmenu_init_menu ../Source/mainmenu.cpp:45 #16 0x556776a44c05 in mainmenu_single_player ../Source/mainmenu.cpp:61 #17 0x556776a454a9 in mainmenu_loop ../Source/mainmenu.cpp:152 #18 0x5567767d2892 in DiabloMain ../Source/diablo.cpp:602 #19 0x5567766e3c69 in main ../SourceX/main.cpp:34 #20 0x7f435a69ecb1 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28cb1) ```
- Loading branch information