libs/libc/stdio: fix ungetc operation

Do not modify errno in case of failure
Return EOF if the value of c equals to EOF

Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
This commit is contained in:
Petro Karashchenko 2022-10-14 11:54:56 +02:00 committed by Xiang Xiao
parent a0918d6d5e
commit ec4a615f6c
1 changed files with 2 additions and 5 deletions

View File

@ -43,11 +43,10 @@ int ungetc(int c, FAR FILE *stream)
int nungotten;
#endif
/* Verify that a non-NULL stream was provided */
/* Verify that a non-NULL stream was provided and c is not EOF */
if (!stream)
if (!stream || c == EOF)
{
set_errno(EBADF);
return EOF;
}
@ -55,7 +54,6 @@ int ungetc(int c, FAR FILE *stream)
if ((stream->fs_fd < 0) || ((stream->fs_oflags & O_RDOK) == 0))
{
set_errno(EBADF);
return EOF;
}
@ -70,7 +68,6 @@ int ungetc(int c, FAR FILE *stream)
else
#endif
{
set_errno(ENOMEM);
return EOF;
}
}