SI_DeviceGCController: Remedy undefined behavior regarding shifts

Left shifting a negative left-hand operand is undefined behavior per section 5.8.2 of the C++11 standard.
This commit is contained in:
Lioncash 2015-07-09 13:08:37 -04:00
parent 95fed00cbb
commit 6e90d1e433
1 changed files with 5 additions and 1 deletions

View File

@ -118,7 +118,11 @@ public:
virtual bool GetData(u32& _Hi, u32& _Low) override
{
CSIDevice_GCController::GetData(_Hi, _Low);
_Hi &= ~PAD_USE_ORIGIN << 16;
// Unset all bits except those that represent
// A, B, X, Y, Start and the error bits, as they
// are not used.
_Hi &= ~0x20FFFFFF;
return true;
}
};