Merge pull request #258 from tkchia/tkchia/abort

plat/msdos86: fix: read() on O_TEXT fd should try to return any errors signaled by low-level read
This commit is contained in:
David Given 2022-07-17 18:29:00 +02:00 committed by GitHub
commit e640a33154
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -33,6 +33,10 @@ ssize_t read(int fd, void* buffer, size_t count)
* file pointer to just before the ^Z. Also set an internal flag
* for the fd so that we do not try to read any further (until e.g.
* a seek happens).
*
* If a low-level read returns an error (-1) before anything has
* actually been read, we can pass the error indication (-1) up to
* the caller.
*/
p = buffer;
tot = 0;
@ -41,7 +45,7 @@ ssize_t read(int fd, void* buffer, size_t count)
{
r = _sys_rawread(fd, p, count - (p - (char *)buffer));
if (r <= 0)
return tot;
return tot ? tot : r;
q = memchr(p, 0x1a, (size_t)r);
if (q)