diff --git a/kernel/ipc/pipe/pipe.c b/kernel/ipc/pipe/pipe.c index 0392540..ab19bca 100644 --- a/kernel/ipc/pipe/pipe.c +++ b/kernel/ipc/pipe/pipe.c @@ -33,7 +33,9 @@ int32_t ipc_pipewrite(IpcPipe *pipe, const uint8_t *const buffer, size_t n) { size_t i = 0; spinlock_acquire(&pipe->spinlock); for (; i < n; i++) { - rbuf_push(&pipe->rbuf, buffer[i]); + if (rbuf_push(&pipe->rbuf, buffer[i]) < 0) { + break; + } } spinlock_release(&pipe->spinlock); return i;