X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e6416905c4afb34e61276cdc07c44813a3ebc5e7..9e622bd093f8e106b7e8a00f55620f13cc5cd87f:/lunaix-os/kernel/ds/buffer.c diff --git a/lunaix-os/kernel/ds/buffer.c b/lunaix-os/kernel/ds/buffer.c index 7b277c8..c40ed51 100644 --- a/lunaix-os/kernel/ds/buffer.c +++ b/lunaix-os/kernel/ds/buffer.c @@ -2,17 +2,19 @@ #include struct vecbuf* -vbuf_alloc(struct vecbuf* vec, void* buf, size_t size) +vbuf_alloc(struct vecbuf** vec, void* buf, size_t size) { struct vecbuf* vbuf = valloc(sizeof(struct vecbuf)); + struct vecbuf* _vec = *vec; *vbuf = (struct vecbuf){ .buf = { .buffer = buf, .size = size }, - .acc_sz = vbuf_size(vec) + size }; + .acc_sz = vbuf_size(_vec) + size }; - if (vec) { - llist_append(&vec->components, &vbuf->components); + if (_vec) { + llist_append(&_vec->components, &vbuf->components); } else { llist_init_head(&vbuf->components); + *vec = vbuf; } return vbuf;