Correctly write menu items to zone

This commit is contained in:
Jan 2021-12-29 02:51:58 +01:00
parent a0ff11a857
commit c87e87eafc

View File

@ -710,10 +710,14 @@ namespace IW4
return item; return item;
} }
_NODISCARD itemDef_s** ConvertMenuItems(const CommonMenuDef& commonMenu) const void ConvertMenuItems(menuDef_t* menu, const CommonMenuDef& commonMenu) const
{ {
if (commonMenu.m_items.empty()) if (commonMenu.m_items.empty())
return nullptr; {
menu->itemCount = 0;
menu->items = nullptr;
return;
}
auto* items = static_cast<itemDef_s**>(m_memory->Alloc(sizeof(void*) * commonMenu.m_items.size())); auto* items = static_cast<itemDef_s**>(m_memory->Alloc(sizeof(void*) * commonMenu.m_items.size()));
memset(items, 0, sizeof(void*) * commonMenu.m_items.size()); memset(items, 0, sizeof(void*) * commonMenu.m_items.size());
@ -721,7 +725,8 @@ namespace IW4
for (auto i = 0u; i < commonMenu.m_items.size(); i++) for (auto i = 0u; i < commonMenu.m_items.size(); i++)
items[i] = ConvertItem(commonMenu, *commonMenu.m_items[i]); items[i] = ConvertItem(commonMenu, *commonMenu.m_items[i]);
return items; menu->items = items;
menu->itemCount = commonMenu.m_items.size();
} }
public: public:
@ -780,7 +785,7 @@ namespace IW4
menu->onCloseRequest = ConvertEventHandlerSet(commonMenu.m_on_request_close.get(), &commonMenu); menu->onCloseRequest = ConvertEventHandlerSet(commonMenu.m_on_request_close.get(), &commonMenu);
menu->onESC = ConvertEventHandlerSet(commonMenu.m_on_esc.get(), &commonMenu); menu->onESC = ConvertEventHandlerSet(commonMenu.m_on_esc.get(), &commonMenu);
menu->onKey = ConvertKeyHandler(commonMenu.m_key_handlers, &commonMenu); menu->onKey = ConvertKeyHandler(commonMenu.m_key_handlers, &commonMenu);
menu->items = ConvertMenuItems(commonMenu); ConvertMenuItems(menu, commonMenu);
menu->expressionData = m_conversion_zone_state->m_supporting_data; menu->expressionData = m_conversion_zone_state->m_supporting_data;
return menu; return menu;