#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: encoding.c,v 1.19 2019/02/23 21:54:05 christos Exp $")
+FILE_RCSID("@(#)$File: encoding.c,v 1.20 2019/04/15 16:48:41 christos Exp $")
#endif /* lint */
#include "magic.h"
goto done;
}
mlen = (nbytes + 1) * sizeof(nbuf[0]);
- if ((nbuf = CAST(unsigned char *, calloc(CAST(size_t, 1), mlen))) == NULL) {
+ if ((nbuf = CAST(unsigned char *,
+ calloc(CAST(size_t, 1), mlen))) == NULL) {
file_oomem(ms, mlen);
goto done;
}
/* XXX fix to properly handle chars > 65536 */
if (bigend)
- ubf[(*ulen)++] = bf[i + 1] + (bf[i] << 8);
+ ubf[(*ulen)++] = bf[i + 1]
+ | (CAST(unichar, bf[i]) << 8);
else
- ubf[(*ulen)++] = bf[i] + (bf[i + 1] << 8);
+ ubf[(*ulen)++] = bf[i]
+ | (CAST(unichar, bf[i + 1]) << 8);
if (ubf[*ulen - 1] == 0xfffe)
return 0;
/* XXX fix to properly handle chars > 65536 */
if (bigend)
- ubf[(*ulen)++] = bf[i + 3] | (bf[i + 2] << 8)
- | (bf[i + 1] << 16)
+ ubf[(*ulen)++] = CAST(unichar, bf[i + 3])
+ | (CAST(unichar, bf[i + 2]) << 8)
+ | (CAST(unichar, bf[i + 1]) << 16)
| (CAST(unichar, bf[i]) << 24);
else
- ubf[(*ulen)++] = bf[i] | (bf[i + 1] << 8)
- | (bf[i + 2] << 16)
+ ubf[(*ulen)++] = CAST(unichar, bf[i + 0])
+ | (CAST(unichar, bf[i + 1]) << 8)
+ | (CAST(unichar, bf[i + 2]) << 16)
| (CAST(unichar, bf[i + 3]) << 24);
if (ubf[*ulen - 1] == 0xfffe)