mirror of
https://github.com/GerbilSoft/zlib-ng.git
synced 2025-06-18 11:35:35 -04:00
Make the existence of gz_intmax() unconditional.
gz_intmax() is noted in zlib.map. This assures it's always there. madler/zlib#01253ecd7e0a01d311670f2d03c61b82fc12d338
This commit is contained in:
parent
3b8e7f616e
commit
0d2984d0d3
1
gzguts.h
1
gzguts.h
@ -139,6 +139,7 @@ void Z_INTERNAL gz_error(gz_state *, int, const char *);
|
||||
/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
|
||||
value -- needed when comparing unsigned to z_off64_t, which is signed
|
||||
(possible z_off64_t types off_t, off64_t, and long are all signed) */
|
||||
unsigned Z_INTERNAL gz_intmax(void);
|
||||
#define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
|
||||
|
||||
#endif /* GZGUTS_H_ */
|
||||
|
18
gzlib.c
18
gzlib.c
@ -523,3 +523,21 @@ void Z_INTERNAL gz_error(gz_state *state, int err, const char *msg) {
|
||||
}
|
||||
(void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3, "%s%s%s", state->path, ": ", msg);
|
||||
}
|
||||
|
||||
/* portably return maximum value for an int (when limits.h presumed not
|
||||
available) -- we need to do this to cover cases where 2's complement not
|
||||
used, since C standard permits 1's complement and sign-bit representations,
|
||||
otherwise we could just use ((unsigned)-1) >> 1 */
|
||||
unsigned Z_INTERNAL gz_intmax(void) {
|
||||
#ifdef INT_MAX
|
||||
return INT_MAX;
|
||||
#else
|
||||
unsigned p = 1, q;
|
||||
do {
|
||||
q = p;
|
||||
p <<= 1;
|
||||
p++;
|
||||
} while (p > q);
|
||||
return q >> 1;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user