1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00
2004-08-10  Jakub Jelinek  <jakub@redhat.com>
	* libio/bits/stdio.h (fread_unlocked): Cast 0 to (size_t).
	(fwrite_unlocked): When checking if size * n is <= 8, cast each
	argument to size_t individually.  Cast n to (void) instead of
	(size_t), surround with (), return (size_t) 0 if one of n or size
	is 0.  [BZ #316]
	* stdio-common/Makefile (tests): Add tst-unlockedio.
	* stdio-common/tst-unlockedio.c: New test.
This commit is contained in:
Roland McGrath
2004-08-10 18:01:40 +00:00
parent 65903cc585
commit f98ca075db
4 changed files with 173 additions and 5 deletions

View File

@@ -148,12 +148,13 @@ ferror_unlocked (FILE *__stream) __THROW
|| (__builtin_constant_p (n) && (size_t) (n) == 0)) \
/* Evaluate all parameters once. */ \
? ((void) (ptr), (void) (stream), (void) (size), \
(void) (n), 0) \
(void) (n), (size_t) 0) \
: fread_unlocked (ptr, size, n, stream))))
# define fwrite_unlocked(ptr, size, n, stream) \
(__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \
&& (size_t) ((size) * (n)) <= 8 && (size_t) (size) != 0) \
&& (size_t) (size) * (size_t) (n) <= 8 \
&& (size_t) (size) != 0) \
? ({ const char *__ptr = (const char *) (ptr); \
FILE *__stream = (stream); \
size_t __cnt; \
@@ -167,7 +168,7 @@ ferror_unlocked (FILE *__stream) __THROW
|| (__builtin_constant_p (n) && (size_t) (n) == 0)) \
/* Evaluate all parameters once. */ \
? ((void) (ptr), (void) (stream), (void) (size), \
(size_t) n) \
(void) (n), (size_t) 0) \
: fwrite_unlocked (ptr, size, n, stream))))
#endif