use architecture-specific ssize_t definition
after change 32822 was rejected, this is the more light-weight version of the fix: libc/include/sys/types.h already - via libc/kernel/common/linux/posix_types.h - includes a definition of __kernel_ssize_t from libc/kernel/arch-*/asm/posix_types.h which is architecture-specific, toolchain-agnostic and also gets rid of the gcc -Wformat warning (which it issues correctly, since this i̲s̲ indeed a bug in bionic) Change-Id: Ie4503ab16628bc25815a836d07556f665e9795c7
This commit is contained in:
parent
593abb7b59
commit
c641cafbc3
@ -85,7 +85,7 @@ typedef .... pthread_t;
|
||||
|
||||
#ifndef _SSIZE_T_DEFINED_
|
||||
#define _SSIZE_T_DEFINED_
|
||||
typedef long int ssize_t;
|
||||
typedef __kernel_ssize_t ssize_t;
|
||||
#endif
|
||||
|
||||
typedef __kernel_suseconds_t suseconds_t;
|
||||
|
@ -169,3 +169,12 @@ TEST(stdio, getline_invalid) {
|
||||
ASSERT_EQ(getline(&buffer, &buffer_length, fp), -1);
|
||||
ASSERT_EQ(EBADF, errno);
|
||||
}
|
||||
|
||||
TEST(stdio, printf_ssize_t) {
|
||||
// We used to have a ssize_t definition that confused GCC into saying:
|
||||
// error: format '%zd' expects argument of type 'signed size_t',
|
||||
// but argument 4 has type 'ssize_t {aka long int}' [-Werror=format]
|
||||
ssize_t v = 1;
|
||||
char buf[32];
|
||||
snprintf(buf, sizeof(buf), "%zd", v);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user