Add non-macro stdin/stdout/stderr too.
Various C and C++ standards explicitly say that stdin/stdout/stderr should be macros, but glibc makes them global variables too. This means it's possible to write code that uses those names as locals, but that code (toybox being an example) won't build on bionic. If we'd done this earlier, we could have hidden __sF for LP64, but it's too late now. Change-Id: I90cf8c73f52b66e1760b8fa2e135b9f9f9651230
This commit is contained in:
@@ -59,12 +59,15 @@ static struct glue uglue = { 0, FOPEN_MAX - 3, usual };
|
||||
static struct glue *lastglue = &uglue;
|
||||
_THREAD_PRIVATE_MUTEX(__sfp_mutex);
|
||||
|
||||
struct __sfileext __sFext[3];
|
||||
static struct __sfileext __sFext[3];
|
||||
FILE __sF[3] = {
|
||||
std(__SRD, STDIN_FILENO), /* stdin */
|
||||
std(__SWR, STDOUT_FILENO), /* stdout */
|
||||
std(__SWR|__SNBF, STDERR_FILENO) /* stderr */
|
||||
};
|
||||
FILE* stdin = &__sF[0];
|
||||
FILE* stdout = &__sF[1];
|
||||
FILE* stderr = &__sF[2];
|
||||
struct glue __sglue = { &uglue, 3, __sF };
|
||||
|
||||
static struct glue *
|
||||
|
Reference in New Issue
Block a user