From 7e55b3ec9643e0924338e40e643eb19555d844d7 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Sun, 14 Jun 2015 11:32:13 +0200 Subject: [PATCH] Fix some GCC compiler warnings about potentially uninitialized variables (compilers are getting too clever..) --- Core/HLE/sceRtc.cpp | 18 +++++++++--------- Core/MemMapHelpers.h | 13 +++++++++++++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Core/HLE/sceRtc.cpp b/Core/HLE/sceRtc.cpp index b44327e13c..d582f54bb2 100644 --- a/Core/HLE/sceRtc.cpp +++ b/Core/HLE/sceRtc.cpp @@ -330,7 +330,7 @@ static u32 sceRtcGetCurrentClockLocalTime(u32 pspTimePtr) ret.microsecond = tv.tv_usec; if (Memory::IsValidAddress(pspTimePtr)) - Memory::WriteStruct(pspTimePtr, &ret); + Memory::WriteStructUnchecked(pspTimePtr, &ret); hleEatCycles(2000); hleReSchedule("rtc current clock local"); @@ -346,7 +346,7 @@ static u32 sceRtcSetTick(u32 pspTimePtr, u32 tickPtr) ScePspDateTime ret; __RtcTicksToPspTime(ret, ticks); - Memory::WriteStruct(pspTimePtr, &ret); + Memory::WriteStructUnchecked(pspTimePtr, &ret); } return 0; } @@ -358,7 +358,7 @@ static u32 sceRtcGetTick(u32 pspTimePtr, u32 tickPtr) if (Memory::IsValidAddress(pspTimePtr) && Memory::IsValidAddress(tickPtr)) { - Memory::ReadStruct(pspTimePtr, &pt); + Memory::ReadStructUnchecked(pspTimePtr, &pt); if (!__RtcValidatePspTime(pt)) return SCE_KERNEL_ERROR_INVALID_VALUE; @@ -509,7 +509,7 @@ static int sceRtcCheckValid(u32 datePtr) if (Memory::IsValidAddress(datePtr)) { ScePspDateTime pt; - Memory::ReadStruct(datePtr, &pt); + Memory::ReadStructUnchecked(datePtr, &pt); if (pt.year < 1 || pt.year > 9999) { return PSP_TIME_INVALID_YEAR; @@ -559,7 +559,7 @@ static int sceRtcSetTime_t(u32 datePtr, u32 time) { ScePspDateTime pt; __RtcTicksToPspTime(pt, time*1000000ULL + rtcMagicOffset); - Memory::WriteStruct(datePtr, &pt); + Memory::WriteStructUnchecked(datePtr, &pt); } else { @@ -590,7 +590,7 @@ static int sceRtcGetTime_t(u32 datePtr, u32 timePtr) if (Memory::IsValidAddress(datePtr)&&Memory::IsValidAddress(timePtr)) { ScePspDateTime pt; - Memory::ReadStruct(datePtr, &pt); + Memory::ReadStructUnchecked(datePtr, &pt); u32 result = (u32) ((__RtcPspTimeToTicks(pt)-rtcMagicOffset)/1000000ULL); Memory::Write_U32(result, timePtr); } @@ -607,7 +607,7 @@ static int sceRtcGetTime64_t(u32 datePtr, u32 timePtr) if (Memory::IsValidAddress(datePtr)&&Memory::IsValidAddress(timePtr)) { ScePspDateTime pt; - Memory::ReadStruct(datePtr, &pt); + Memory::ReadStructUnchecked(datePtr, &pt); u64 result = (__RtcPspTimeToTicks(pt)-rtcMagicOffset)/1000000ULL; Memory::Write_U64(result, timePtr); } @@ -636,7 +636,7 @@ static int sceRtcSetDosTime(u32 datePtr, u32 dosTime) pt.second = (hms << 1) & 0x3E; pt.microsecond = 0; - Memory::WriteStruct(datePtr, &pt); + Memory::WriteStructUnchecked(datePtr, &pt); } else { @@ -652,7 +652,7 @@ static int sceRtcGetDosTime(u32 datePtr, u32 dosTime) if (Memory::IsValidAddress(datePtr)&&Memory::IsValidAddress(dosTime)) { ScePspDateTime pt; - Memory::ReadStruct(datePtr, &pt); + Memory::ReadStructUnchecked(datePtr, &pt); u32 result = 0; if(pt.year < 1980) diff --git a/Core/MemMapHelpers.h b/Core/MemMapHelpers.h index 9921b11c9c..1fe06d3ae1 100644 --- a/Core/MemMapHelpers.h +++ b/Core/MemMapHelpers.h @@ -69,6 +69,13 @@ void ReadStruct(u32 address, T *ptr) Memcpy(ptr, address, sz); } +template +void ReadStructUnchecked(u32 address, T *ptr) +{ + const u32 sz = (u32)sizeof(*ptr); + MemcpyUnchecked(ptr, address, sz); +} + template void WriteStruct(u32 address, T *ptr) { @@ -76,4 +83,10 @@ void WriteStruct(u32 address, T *ptr) Memcpy(address, ptr, sz); } +template +void WriteStructUnchecked(u32 address, T *ptr) +{ + const u32 sz = (u32)sizeof(*ptr); + MemcpyUnchecked(address, ptr, sz); +} }