From 1c654475393e6595bc00245178ae5bf253e318ef Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 28 Aug 2022 23:51:40 +0300 Subject: [PATCH] misc: get rid of an unaligned read 96c6ec7055ecef55b3dd221c86b796512bf52107 introduced an unaligned read which is undefined behavior in C, even if most hardware allows it (but some very old ARMs don't). Perf. doesn't matter here so read byte-by-byte. notaz/pcsx_rearmed#261 --- libpcsxcore/misc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c index 7aa4fef2..c06a8a4f 100644 --- a/libpcsxcore/misc.c +++ b/libpcsxcore/misc.c @@ -55,10 +55,11 @@ struct iso_directory_record { char name [1]; }; -void mmssdd( char *b, char *p ) +static void mmssdd( char *b, char *p ) { int m, s, d; - int block = SWAP32(*((uint32_t*) b)); + unsigned char *ub = (void *)b; + int block = (ub[3] << 24) | (ub[2] << 16) | (ub[1] << 8) | ub[0]; block += 150; m = block / 4500; // minutes -- 2.39.5