https://bugs.gentoo.org/638192 From 8aca404f486429e2304bd6572c2a6fb89e43cf2d Mon Sep 17 00:00:00 2001 From: Marti Maria Date: Mon, 20 Nov 2017 21:59:38 +0100 Subject: [PATCH] fix for big endian MLU bug Thanks to Sergei Trofimovic for the fix --- AUTHORS | 1 + src/cmsnamed.c | 20 ++++++-------------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/cmsnamed.c b/src/cmsnamed.c index 95dc18b..773e4d2 100644 --- a/src/cmsnamed.c +++ b/src/cmsnamed.c @@ -183,27 +183,19 @@ cmsBool AddMLUBlock(cmsMLU* mlu, cmsUInt32Number size, const wchar_t *Block, static cmsUInt16Number strTo16(const char str[3]) -{ +{ const cmsUInt8Number* ptr8 = (const cmsUInt8Number*)str; - cmsUInt16Number n = (cmsUInt16Number) (((cmsUInt16Number) ptr8[1] << 8) | ptr8[0]); + cmsUInt16Number n = (cmsUInt16Number)(((cmsUInt16Number)ptr8[0] << 8) | ptr8[1]); - return _cmsAdjustEndianess16(n); + return n; } static void strFrom16(char str[3], cmsUInt16Number n) { - // Assuming this would be aligned - union { - - cmsUInt16Number n; - cmsUInt8Number str[2]; - - } c; - - c.n = _cmsAdjustEndianess16(n); - - str[0] = (char) c.str[0]; str[1] = (char) c.str[1]; str[2] = (char) 0; + str[0] = (char)(n >> 8); + str[1] = (char)n; + str[2] = (char)0; } -- 2.15.0