mirror of
https://github.com/ish-app/ish.git
synced 2026-05-28 21:10:35 +00:00
Make fifo less segfaulty
This commit is contained in:
+3
-2
@@ -31,10 +31,11 @@ int fifo_write(struct fifo *fifo, const void *data, size_t size, int flags) {
|
||||
fifo->size -= excess;
|
||||
}
|
||||
|
||||
size_t first_copy_size = fifo->capacity - fifo->start - fifo->size;
|
||||
size_t tail = (fifo->start + fifo->size) % fifo->capacity;;
|
||||
size_t first_copy_size = fifo->capacity - tail;
|
||||
if (first_copy_size > size)
|
||||
first_copy_size = size;
|
||||
memcpy(&fifo->buf[fifo->start + fifo->size], data, first_copy_size);
|
||||
memcpy(&fifo->buf[tail], data, first_copy_size);
|
||||
memcpy(&fifo->buf[0], (char *) data + first_copy_size, size - first_copy_size);
|
||||
fifo->size += size;
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user