citra-emu
/
citra-canary
Archived
1
0
Fork 0

Core: Fix undefined behavior in mem_map_funcs' WriteBlock function

This commit is contained in:
Lioncash 2014-08-17 14:23:54 -04:00
parent d1c2b76ad1
commit da18671166
1 changed files with 8 additions and 4 deletions

View File

@ -289,11 +289,15 @@ void Write64(const u32 addr, const u64 data) {
void WriteBlock(const u32 addr, const u8* data, const int size) { void WriteBlock(const u32 addr, const u8* data, const int size) {
int offset = 0; int offset = 0;
while (offset < (size & ~3)) while (offset < (size & ~3)) {
Write32(addr + offset, *(u32*)&data[offset += 4]); Write32(addr + offset, *(u32*)&data[offset]);
offset += 4;
}
if (size & 2) if (size & 2) {
Write16(addr + offset, *(u16*)&data[offset += 2]); Write16(addr + offset, *(u16*)&data[offset]);
offset += 2;
}
if (size & 1) if (size & 1)
Write8(addr + offset, data[offset]); Write8(addr + offset, data[offset]);