mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01: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:
parent
bea1a4a773
commit
71d9e0fe76
1 changed files with 3 additions and 3 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue