diff --git a/src/modules/_Stdio/buffer.cmod b/src/modules/_Stdio/buffer.cmod
index ee69177dc41dffeeccae67ac2a85e6b91f1ed388..fafba50b9a8950d658145329baf822ecb0149c4d 100644
--- a/src/modules/_Stdio/buffer.cmod
+++ b/src/modules/_Stdio/buffer.cmod
@@ -957,6 +957,7 @@ PIKECLASS IOBuffer
         if( res == -1 && errno == EINTR )
           continue;
         if( res <= 0 ) {
+	  fd->my_errno = errno;
 	  if (!written) written = -1;
           break;
 	}