Fix aligned memory read of unanligend memory

This commit is contained in:
jaby 2023-02-03 18:10:57 +01:00
parent 6dc4d620ee
commit 8df55d1594
2 changed files with 13 additions and 1 deletions

View File

@ -0,0 +1,11 @@
#ifndef __JABYENGINE_UNALIGNED_READ_HPP__
#define __JABYENGINE_UNALIGNED_READ_HPP__
#include "../../stdint.h"
namespace JabyEngine {
uint16_t unaligned_lhu(const uint8_t* adr) {
return (static_cast<uint16_t>(adr[0]) | static_cast<uint16_t>(adr[1]) << 8);
}
}
#endif //!__JABYENGINE_UNALIGNED_READ_HPP__

View File

@ -1,4 +1,5 @@
#include <PSX/Auxiliary/lz4_decompressor.hpp>
#include <PSX/Auxiliary/unaligned_read.hpp>
namespace JabyEngine {
static void memcpy(uint8_t* &dst, ArrayRange<const uint8_t> &src, size_t size) {
@ -94,7 +95,7 @@ namespace JabyEngine {
// We are unused and invalid
if(data.size >= sizeof(uint16_t)) {
// We can read all
this->state.match_offset = *reinterpret_cast<const uint16_t*>(data.start);
this->state.match_offset = unaligned_lhu(data.start);
data.skip(sizeof(uint16_t));
if(!state_complete(this->state)) {