mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-26 15:50:00 -06:00
fix crashes when inserting/ejecting GBA carts/addons with nothing loaded
This commit is contained in:
@ -832,6 +832,27 @@ std::unique_ptr<CartCommon> ParseROM(std::unique_ptr<u8[]>&& romdata, u32 romlen
|
||||
return cart;
|
||||
}
|
||||
|
||||
std::unique_ptr<CartCommon> LoadAddon(int type, void* userdata)
|
||||
{
|
||||
std::unique_ptr<CartCommon> cart;
|
||||
switch (type)
|
||||
{
|
||||
case GBAAddon_RAMExpansion:
|
||||
cart = std::make_unique<CartRAMExpansion>();
|
||||
break;
|
||||
case GBAAddon_RumblePak:
|
||||
cart = std::make_unique<CartRumblePak>(userdata);
|
||||
break;
|
||||
|
||||
default:
|
||||
Log(LogLevel::Warn, "GBACart: !! invalid addon type %d\n", type);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
cart->Reset();
|
||||
return cart;
|
||||
}
|
||||
|
||||
void GBACartSlot::SetCart(std::unique_ptr<CartCommon>&& cart) noexcept
|
||||
{
|
||||
Cart = std::move(cart);
|
||||
@ -864,23 +885,6 @@ void GBACartSlot::SetSaveMemory(const u8* savedata, u32 savelen) noexcept
|
||||
}
|
||||
}
|
||||
|
||||
void GBACartSlot::LoadAddon(void* userdata, int type) noexcept
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GBAAddon_RAMExpansion:
|
||||
Cart = std::make_unique<CartRAMExpansion>();
|
||||
break;
|
||||
case GBAAddon_RumblePak:
|
||||
Cart = std::make_unique<CartRumblePak>(userdata);
|
||||
break;
|
||||
|
||||
default:
|
||||
Log(LogLevel::Warn, "GBACart: !! invalid addon type %d\n", type);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<CartCommon> GBACartSlot::EjectCart() noexcept
|
||||
{
|
||||
return std::move(Cart);
|
||||
|
Reference in New Issue
Block a user