UBFix: uninitialized variables in m4a engine and siirtc.c (#1432)
This commit is contained in:
+22
-8
@@ -71,6 +71,7 @@ static bool8 sLocked;
|
||||
static int WriteCommand(u8 value);
|
||||
static int WriteData(u8 value);
|
||||
static u8 ReadData();
|
||||
|
||||
static void EnableGpioPortRead();
|
||||
static void DisableGpioPortRead();
|
||||
|
||||
@@ -98,8 +99,12 @@ u8 SiiRtcProbe(void)
|
||||
|
||||
errorCode = 0;
|
||||
|
||||
#ifdef BUGFIX
|
||||
if (!(rtc.status & SIIRTCINFO_24HOUR) || (rtc.status & SIIRTCINFO_POWER))
|
||||
#else
|
||||
if ((rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == SIIRTCINFO_POWER
|
||||
|| (rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == 0)
|
||||
#endif
|
||||
{
|
||||
// The RTC is in 12-hour mode. Reset it and switch to 24-hour mode.
|
||||
|
||||
@@ -131,7 +136,7 @@ u8 SiiRtcProbe(void)
|
||||
|
||||
bool8 SiiRtcReset(void)
|
||||
{
|
||||
u8 result;
|
||||
bool8 result;
|
||||
struct SiiRtcInfo rtc;
|
||||
|
||||
if (sLocked == TRUE)
|
||||
@@ -392,7 +397,11 @@ static int WriteCommand(u8 value)
|
||||
GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
|
||||
}
|
||||
|
||||
// control reaches end of non-void function
|
||||
// Nothing uses the returned value from this function,
|
||||
// so the undefined behavior is harmless in the vanilla game.
|
||||
#ifdef UBFIX
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int WriteData(u8 value)
|
||||
@@ -409,7 +418,11 @@ static int WriteData(u8 value)
|
||||
GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
|
||||
}
|
||||
|
||||
// control reaches end of non-void function
|
||||
// Nothing uses the returned value from this function,
|
||||
// so the undefined behavior is harmless in the vanilla game.
|
||||
#ifdef UBFIX
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static u8 ReadData()
|
||||
@@ -417,9 +430,10 @@ static u8 ReadData()
|
||||
u8 i;
|
||||
u8 temp;
|
||||
u8 value;
|
||||
#ifdef UBFIX
|
||||
|
||||
#ifdef UBFIX
|
||||
value = 0;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
@@ -431,7 +445,7 @@ static u8 ReadData()
|
||||
GPIO_PORT_DATA = SCK_HI | CS_HI;
|
||||
|
||||
temp = ((GPIO_PORT_DATA & SIO_HI) >> 1);
|
||||
value = (value >> 1) | (temp << 7); // UB: value is uninitialized on first iteration
|
||||
value = (value >> 1) | (temp << 7);
|
||||
}
|
||||
|
||||
return value;
|
||||
@@ -439,10 +453,10 @@ static u8 ReadData()
|
||||
|
||||
static void EnableGpioPortRead()
|
||||
{
|
||||
GPIO_PORT_READ_ENABLE = 1;
|
||||
GPIO_PORT_READ_ENABLE = TRUE;
|
||||
}
|
||||
|
||||
static void DisableGpioPortRead()
|
||||
{
|
||||
GPIO_PORT_READ_ENABLE = 0;
|
||||
GPIO_PORT_READ_ENABLE = FALSE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user