Skip to content

Commit e439a20

Browse files
committed
pipe: Fix pipe buffers
1 parent e3c67e8 commit e439a20

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

kernel/src/vfs/pipe.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ impl FileOps for PipeBuffer {
9090
let mut inner = self.inner.lock();
9191
let mut v = vec![0u8; buf.len()];
9292
let len = inner.buffer.read(&mut v);
93-
buf.copy_from_slice(&v)?;
93+
buf.copy_from_slice(&v[..len])?;
9494

9595
// If there was at least one byte written to the pipe
9696
if len > 0 {
@@ -129,7 +129,8 @@ impl FileOps for PipeBuffer {
129129
return Err(Errno::EPIPE);
130130
}
131131

132-
let mut v = vec![0u8; buf.len()];
132+
let to_write = buf.len().min(inner.buffer.get_available_len());
133+
let mut v = vec![0u8; to_write];
133134
buf.copy_to_slice(&mut v)?;
134135
inner.buffer.write(&v)
135136
};

0 commit comments

Comments
 (0)