mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-08 17:42:12 +03:00
libio: Add __nonnull for FILE * arguments of fclose and freopen
Calling fclose or freopen with a null FILE * is undefined behavior, and doing so in practice will cause a SIGSEGV. So it seems suitable for __nonnull. This will help the compiler to warn for some buggy code, like https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109570. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
committed by
Adhemerval Zanella
parent
bea1a4a773
commit
71d9e0fe76
@@ -180,7 +180,7 @@ extern int renameat2 (int __oldfd, const char *__old, int __newfd,
|
|||||||
|
|
||||||
This function is a possible cancellation point and therefore not
|
This function is a possible cancellation point and therefore not
|
||||||
marked with __THROW. */
|
marked with __THROW. */
|
||||||
extern int fclose (FILE *__stream);
|
extern int fclose (FILE *__stream) __nonnull ((1));
|
||||||
|
|
||||||
#undef __attr_dealloc_fclose
|
#undef __attr_dealloc_fclose
|
||||||
#define __attr_dealloc_fclose __attr_dealloc (fclose, 1)
|
#define __attr_dealloc_fclose __attr_dealloc (fclose, 1)
|
||||||
@@ -269,7 +269,7 @@ extern FILE *fopen (const char *__restrict __filename,
|
|||||||
marked with __THROW. */
|
marked with __THROW. */
|
||||||
extern FILE *freopen (const char *__restrict __filename,
|
extern FILE *freopen (const char *__restrict __filename,
|
||||||
const char *__restrict __modes,
|
const char *__restrict __modes,
|
||||||
FILE *__restrict __stream) __wur;
|
FILE *__restrict __stream) __wur __nonnull ((3));
|
||||||
#else
|
#else
|
||||||
# ifdef __REDIRECT
|
# ifdef __REDIRECT
|
||||||
extern FILE *__REDIRECT (fopen, (const char *__restrict __filename,
|
extern FILE *__REDIRECT (fopen, (const char *__restrict __filename,
|
||||||
@@ -290,7 +290,7 @@ extern FILE *fopen64 (const char *__restrict __filename,
|
|||||||
__attribute_malloc__ __attr_dealloc_fclose __wur;
|
__attribute_malloc__ __attr_dealloc_fclose __wur;
|
||||||
extern FILE *freopen64 (const char *__restrict __filename,
|
extern FILE *freopen64 (const char *__restrict __filename,
|
||||||
const char *__restrict __modes,
|
const char *__restrict __modes,
|
||||||
FILE *__restrict __stream) __wur;
|
FILE *__restrict __stream) __wur __nonnull ((3));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __USE_POSIX
|
#ifdef __USE_POSIX
|
||||||
|
Reference in New Issue
Block a user