mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-18 23:12:15 +08:00
Fix 32-bit SSIZE_MAX
POSIX requires that SSIZE_MAX have the same type as ssize_t, but on 32-bit, we were defining it as a long even though ssize_t resolves to an int. It also requires that SSIZE_MAX be usable via preprocessor #if, so we can't cheat and use a cast. If this were newlib, I'd have had to hack _intsup.h to probe the qualities of size_t (via gcc's __SIZE_TYPE__), similar to how we already probe the qualities of int8_t and friends, then cross our fingers that ssize_t happens to have the same rank (most systems do, but POSIX permits a system where they differ such as size_t being long while ssize_t is int). Unfortunately gcc gives us neither __SSIZE_TYPE__ nor __SSIZE_MAX__. On the other hand, our limits.h is specific to cygwin, so we can just shortcut to the correct results rather than being generic to all possible ABI. Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
87076a3a83
commit
6795ef7d37
@ -128,9 +128,17 @@ details. */
|
||||
#undef ULLONG_MAX
|
||||
#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
|
||||
|
||||
/* Maximum size of ssize_t */
|
||||
/* Maximum size of ssize_t. Sadly, gcc doesn't give us __SSIZE_MAX__
|
||||
the way it does for __SIZE_MAX__. On the other hand, we happen to
|
||||
know that for Cygwin, ssize_t is 'int' on 32-bit and 'long' on
|
||||
64-bit, and this particular header is specific to Cygwin, so we
|
||||
don't have to jump through hoops. */
|
||||
#undef SSIZE_MAX
|
||||
#if __WORDSIZE == 64
|
||||
#define SSIZE_MAX (__LONG_MAX__)
|
||||
#else
|
||||
#define SSIZE_MAX (__INT_MAX__)
|
||||
#endif
|
||||
|
||||
|
||||
/* Runtime Invariant Values */
|
||||
|
@ -10,6 +10,9 @@ What changed:
|
||||
- Raise number of supported partitions per disk (for raw access) to 63.
|
||||
Addresses: https://cygwin.com/ml/cygwin/2016-06/msg00136.html
|
||||
|
||||
- Fix definition of SSIZE_MAX on 32-bit systems.
|
||||
Addresses: https://cygwin.com/ml/cygwin/2016-07/msg00179.html
|
||||
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
Loading…
x
Reference in New Issue
Block a user