summaryrefslogtreecommitdiff
path: root/src/cmsnamed.c
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2016-12-12 22:57:56 +0100
committerMarti Maria <info@littlecms.com>2016-12-12 22:57:56 +0100
commit58e1bd7e06f8c98e7d304e4b3ac6c76248be8a1f (patch)
treeb2d175002ef5b77e50910a187319d4cea5f4e428 /src/cmsnamed.c
parentf4a958ec4a7623bf56a10ea46a9163d4bbcb6f64 (diff)
downloadlcms2-58e1bd7e06f8c98e7d304e4b3ac6c76248be8a1f.tar.gz
Hopefully fix endianess of MLU
Previous bug caused by several factors, not well identified.
Diffstat (limited to 'src/cmsnamed.c')
-rw-r--r--src/cmsnamed.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/cmsnamed.c b/src/cmsnamed.c
index a8ed7ff..1b75181 100644
--- a/src/cmsnamed.c
+++ b/src/cmsnamed.c
@@ -178,31 +178,32 @@ cmsBool AddMLUBlock(cmsMLU* mlu, cmsUInt32Number size, const wchar_t *Block,
return TRUE;
}
-// Convert from a 3-char code to a cmsUInt16Number. It is done inthis way because some
+// Convert from a 3-char code to a cmsUInt16Number. It is done in this way because some
// compilers don't properly align beginning of strings
static
cmsUInt16Number strTo16(const char str[3])
{
- cmsUInt16Number n = ((cmsUInt16Number) str[0] << 8) | str[1];
+ const cmsUInt8Number* ptr8 = (const cmsUInt8Number*)str;
+ cmsUInt16Number n = ((cmsUInt16Number) ptr8[1] << 8) | ptr8[0];
- return n; // Always big endian in this case
+ return _cmsAdjustEndianess16(n);
}
static
void strFrom16(char str[3], cmsUInt16Number n)
{
- // Assiming this would be aligned
+ // Assuming this would be aligned
union {
cmsUInt16Number n;
- char str[2];
+ cmsUInt8Number str[2];
} c;
- c.n = n; // Always big endian in this case
+ c.n = _cmsAdjustEndianess16(n);
- str[0] = c.str[0]; str[1] = c.str[1]; str[2] = 0;
+ str[0] = (char) c.str[0]; str[1] = (char) c.str[1]; str[2] = (char) 0;
}