From 7d7a36dae4fb47be1009986071fedd926e7868de Mon Sep 17 00:00:00 2001 From: Marco <9968523+marcoffee@users.noreply.github.com> Date: Wed, 1 Jan 2025 07:09:30 -0300 Subject: [PATCH] Add support for big-endian CPUs (#14) --- TinyEXIF.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/TinyEXIF.cpp b/TinyEXIF.cpp index 2fadd6a..c69fb42 100644 --- a/TinyEXIF.cpp +++ b/TinyEXIF.cpp @@ -943,12 +943,14 @@ int EXIFInfo::parseFromEXIFSegment(const uint8_t* buf, unsigned len) { // 8 bytes if (offs + 8 > len) return PARSE_CORRUPT_DATA; + const uint32_t _ONE32 = 1; + const bool IS_LITTLE_ENDIAN = reinterpret_cast(&_ONE32)[0] == 1; bool alignIntel; if (buf[offs] == 'I' && buf[offs+1] == 'I') - alignIntel = true; // 1: Intel byte alignment + alignIntel = IS_LITTLE_ENDIAN; // 1: Intel byte alignment else if (buf[offs] == 'M' && buf[offs+1] == 'M') - alignIntel = false; // 0: Motorola byte alignment + alignIntel = !IS_LITTLE_ENDIAN; // 0: Motorola byte alignment else return PARSE_UNKNOWN_BYTEALIGN; EntryParser parser(buf, len, offs, alignIntel);