You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
diasurgical#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
diasurgical#10 0x556776a44f45 in mainmenu_select_hero_dialog ../Source/mainmenu.cpp:98
diasurgical#11 0x5567765f9f15 in SNetInitializeProvider ../SourceX/storm/storm_net.cpp:102
diasurgical#12 0x556776c996b9 in multi_init_single ../Source/multi.cpp:826
diasurgical#13 0x556776c98b1e in NetInit ../Source/multi.cpp:770
diasurgical#14 0x5567767d0c0b in StartGame ../Source/diablo.cpp:375
diasurgical#15 0x556776a4493d in mainmenu_init_menu ../Source/mainmenu.cpp:45
diasurgical#16 0x556776a44c05 in mainmenu_single_player ../Source/mainmenu.cpp:61
diasurgical#17 0x556776a454a9 in mainmenu_loop ../Source/mainmenu.cpp:152
diasurgical#18 0x5567767d2892 in DiabloMain ../Source/diablo.cpp:602
diasurgical#19 0x5567766e3c69 in main ../SourceX/main.cpp:34
diasurgical#20 0x7f435a69ecb1 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28cb1)
```
0 commit comments