From 4cec3cb45e1a5343c8791fb6bdd1d2b896d3f500 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Fri, 26 Apr 2013 13:22:46 +0800 Subject: [PATCH] Usermode/libc - Fixed back-seek of -1 when a write error occurs in buffering --- Usermode/Libraries/libc.so_src/stdio.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Usermode/Libraries/libc.so_src/stdio.c b/Usermode/Libraries/libc.so_src/stdio.c index 8f7ede00..d03231c3 100644 --- a/Usermode/Libraries/libc.so_src/stdio.c +++ b/Usermode/Libraries/libc.so_src/stdio.c @@ -389,6 +389,11 @@ size_t _fwrite_unbuffered(FILE *fp, size_t size, size_t num, const void *data) while( num -- ) { bytes = _SysWrite(fp->FD, data, size); + if( bytes == (size_t)-1 ) { + // Oops. + // TODO: Set error flag + break; + } if( bytes != size ) { _SysDebug("_fwrite_unbuffered: Oops, rollback %i/%i bytes!", bytes, size); _SysSeek(fp->FD, -bytes, SEEK_CUR); -- 2.20.1