From 5cd309f0cc3c92f3fabbaa499652a8329137c4de Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 16 Sep 2018 08:40:46 -0400 Subject: fix failure of getdelim to set stream orientation on error if EINVAL or ENOMEM happened before the first getc_unlocked, it was possible that the stream orientation had not yet been set. --- src/stdio/getdelim.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/stdio/getdelim.c') diff --git a/src/stdio/getdelim.c b/src/stdio/getdelim.c index 26a56780..60c6cc18 100644 --- a/src/stdio/getdelim.c +++ b/src/stdio/getdelim.c @@ -15,6 +15,7 @@ ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restric FLOCK(f); if (!n || !s) { + f->mode |= f->mode-1; f->flags |= F_ERR; FUNLOCK(f); errno = EINVAL; @@ -58,6 +59,7 @@ ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restric return i; oom: + f->mode |= f->mode-1; f->flags |= F_ERR; FUNLOCK(f); errno = ENOMEM; -- cgit v1.2.1