|
|
@ -5,8 +5,6 @@ which implements the Deflate (RFC 1951) compressed data format specification sta |
|
|
|
It is mainly tuned to get as much speed and compression ratio from as little code |
|
|
|
as needed to keep the implementation as concise as possible. |
|
|
|
|
|
|
|
@raysan5: this file has been reviewed as per https://github.com/raysan5/raylib/issues/3349 |
|
|
|
|
|
|
|
## Features |
|
|
|
- Portable single header and source file duo written in ANSI C (ISO C90) |
|
|
|
- Dual license with either MIT or public domain |
|
|
@ -124,7 +122,6 @@ extern "C" { |
|
|
|
|
|
|
|
struct sinfl { |
|
|
|
const unsigned char *bitptr; |
|
|
|
const unsigned char *bitend; // @raysan5, added |
|
|
|
unsigned long long bitbuf; |
|
|
|
int bitcnt; |
|
|
|
|
|
|
@ -180,23 +177,17 @@ sinfl_bsr(unsigned n) { |
|
|
|
return 31 - __builtin_clz(n); |
|
|
|
#endif |
|
|
|
} |
|
|
|
// @raysan5, commented |
|
|
|
//static unsigned long long |
|
|
|
//sinfl_read64(const void *p) { |
|
|
|
// unsigned long long n; |
|
|
|
// memcpy(&n, p, 8); |
|
|
|
// return n; |
|
|
|
//} |
|
|
|
static unsigned long long |
|
|
|
sinfl_read64(const void *p) { |
|
|
|
unsigned long long n; |
|
|
|
memcpy(&n, p, 8); |
|
|
|
return n; |
|
|
|
} |
|
|
|
static void |
|
|
|
sinfl_copy64(unsigned char **dst, unsigned char **src) { |
|
|
|
// @raysan5, reviewed |
|
|
|
//---------------------------- |
|
|
|
//unsigned long long n; |
|
|
|
//memcpy(&n, *src, 8); |
|
|
|
//memcpy(*dst, &n, 8); |
|
|
|
memcpy(*dst, *src, 8); |
|
|
|
//---------------------------- |
|
|
|
|
|
|
|
unsigned long long n; |
|
|
|
memcpy(&n, *src, 8); |
|
|
|
memcpy(*dst, &n, 8); |
|
|
|
*dst += 8, *src += 8; |
|
|
|
} |
|
|
|
static unsigned char* |
|
|
@ -219,14 +210,7 @@ sinfl_copy128(unsigned char **dst, unsigned char **src) { |
|
|
|
#endif |
|
|
|
static void |
|
|
|
sinfl_refill(struct sinfl *s) { |
|
|
|
// @raysan5, reviewed |
|
|
|
//--------------------------------------------------- |
|
|
|
//s->bitbuf |= sinfl_read64(s->bitptr) << s->bitcnt; |
|
|
|
unsigned long long n = 0; |
|
|
|
memcpy(&n, p, s->bitptr + 8 < s->bitend ? 8 : s->bitend - s->bitptr); |
|
|
|
s->bitbuf |= n << s->bitcnt; |
|
|
|
//--------------------------------------------------- |
|
|
|
|
|
|
|
s->bitbuf |= sinfl_read64(s->bitptr) << s->bitcnt; |
|
|
|
s->bitptr += (63 - s->bitcnt) >> 3; |
|
|
|
s->bitcnt |= 56; /* bitcount in range [56,63] */ |
|
|
|
} |
|
|
@ -400,8 +384,6 @@ sinfl_decompress(unsigned char *out, int cap, const unsigned char *in, int size) |
|
|
|
int last = 0; |
|
|
|
|
|
|
|
s.bitptr = in; |
|
|
|
s.bitend = e; // @raysan5, added |
|
|
|
|
|
|
|
while (1) { |
|
|
|
switch (state) { |
|
|
|
case hdr: { |
|
|
|