mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-11 00:29:11 +01:00
da5a7fcc63
This is larger than I thought I would be, but unfortunately it's quite hard to split fixes like this when the handling is wrong in tons of different places. The content table is limited in size. It can only hold 16 entries. Three consequences: * Since the table cannot grow indefinitely, instead of using a std::map we use a std::array as we should. * Remove a hack where the CFD was cleared back to 0 on IPC close (wtf?) * The CFD now doesn't keep increasing to infinity. It's unknown if this would fix anything at all, but some issues in the past were caused by CFDs being excessively large. Other minor changes: * Simplify save state logic. * Keep track of the UID like ES does. Not sure how useful this is, but we can do this very easily so why not. * Remove the guesswork and use the actual error codes. * Add more error checking to make Dolphin less likely to crash. Something that should be done in the future: deduplicate the filesystem logic. Something that takes one line in the actual ES code takes 10+ lines in our implementation... while duplicating the FS logic... This will likely harder to fix though, so I'm leaving that for another time.