summaryrefslogtreecommitdiff
path: root/tools/nitrogfx/huff.c
diff options
context:
space:
mode:
authorRémi Calixte <remicalixte.rmc@gmail.com>2021-08-31 08:30:47 +0200
committerRémi Calixte <remicalixte.rmc@gmail.com>2021-08-31 08:30:47 +0200
commit12bafff5c0ca6bfdcca3553a0717c80f21e27182 (patch)
tree7c07954a140c879b8c71e33a71c603f27076ab56 /tools/nitrogfx/huff.c
parent4e4192cd7007d16cefe00facbc7b721353c94f60 (diff)
parent05ded46ab7f556956a2eee2411a8d2968b7e8ad6 (diff)
Merge branch 'master' into unk_02006D98
Diffstat (limited to 'tools/nitrogfx/huff.c')
-rw-r--r--tools/nitrogfx/huff.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/tools/nitrogfx/huff.c b/tools/nitrogfx/huff.c
index 143ed79b..d718fb71 100644
--- a/tools/nitrogfx/huff.c
+++ b/tools/nitrogfx/huff.c
@@ -34,17 +34,17 @@ int msort_r(void * data, size_t count, size_t size, cmpfun cmp, void * buffer) {
case 2:
// Swap the two entries if the right one compares higher.
- if (cmp(data, data + size) > 0) {
+ if (cmp(data, PTR_ADD(data, size)) > 0) {
memcpy(buffer, data, size);
- memcpy(data, data + size, size);
- memcpy(data + size, buffer, size);
+ memcpy(data, PTR_ADD(data, size), size);
+ memcpy(PTR_ADD(data, size), buffer, size);
}
break;
default:
// Merge sort out-of-place.
leftPtr = data;
- leftEnd = rightPtr = data + count / 2 * size;
- rightEnd = data + count * size;
+ leftEnd = rightPtr = PTR_ADD(data, count / 2 * size);
+ rightEnd = PTR_ADD(data, count * size);
// Sort the left half
if (!msort_r(leftPtr, count / 2, size, cmp, buffer))
@@ -58,11 +58,11 @@ int msort_r(void * data, size_t count, size_t size, cmpfun cmp, void * buffer) {
i = 0;
do {
if (cmp(leftPtr, rightPtr) <= 0) {
- memcpy(buffer + i * size, leftPtr, size);
- leftPtr += size;
+ memcpy(PTR_ADD(buffer, i * size), leftPtr, size);
+ PTR_IADD(leftPtr, size);
} else {
- memcpy(buffer + i * size, rightPtr, size);
- rightPtr += size;
+ memcpy(PTR_ADD(buffer, i * size), rightPtr, size);
+ PTR_IADD(rightPtr, size);
}
} while (++i < count && leftPtr < leftEnd && rightPtr < rightEnd);
@@ -70,10 +70,10 @@ int msort_r(void * data, size_t count, size_t size, cmpfun cmp, void * buffer) {
// Copy the remainder
if (i < count) {
if (leftPtr < leftEnd) {
- memcpy(buffer + i * size, leftPtr, leftEnd - leftPtr);
+ memcpy(PTR_ADD(buffer, i * size), leftPtr, PTR_DIFF(leftEnd, leftPtr));
}
else {
- memcpy(buffer + i * size, rightPtr, rightEnd - rightPtr);
+ memcpy(PTR_ADD(buffer, i * size), rightPtr, PTR_DIFF(rightEnd, rightPtr));
}
}
@@ -163,7 +163,7 @@ static void write_tree(unsigned char * dest, HuffNode_t * tree, int nitems, stru
if (currNode->header.isLeaf) {
dest[5 + i] = traversal[i].leaf.key;
} else {
- dest[5 + i] = (((currNode->branch.right - traversal - i) / 2) - 1);
+ dest[5 + i] = (unsigned char)(((currNode->branch.right - traversal - i) / 2) - 1);
if (currNode->branch.left->header.isLeaf)
dest[5 + i] |= 0x80;
if (currNode->branch.right->header.isLeaf)
@@ -194,8 +194,8 @@ static inline void read_32_le(unsigned char * src, int * srcPos, uint32_t * buff
}
static void write_bits(unsigned char * dest, int * destPos, struct BitEncoding * encoding, int value, uint32_t * buff, int * buffBits) {
- int nbits = encoding[value].nbits;
- uint32_t bitstring = encoding[value].bitstring;
+ int nbits = (int)encoding[value].nbits;
+ uint32_t bitstring = (uint32_t)encoding[value].bitstring;
if (*buffBits + nbits >= 32) {
int diff = *buffBits + nbits - 32;