| https://bugs.gentoo.org/638192 |
| |
| From 8aca404f486429e2304bd6572c2a6fb89e43cf2d Mon Sep 17 00:00:00 2001 |
| From: Marti Maria <info@littlecms.com> |
| 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 |
| |