git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: nearly complete POSIX.1-2008 compliant terminal interface implementation
[lunaix-os.git]
/
lunaix-os
/
kernel
/
ds
/
buffer.c
diff --git
a/lunaix-os/kernel/ds/buffer.c
b/lunaix-os/kernel/ds/buffer.c
index 0efea6fe054d7b67e3f699f95e74b90417fea722..c40ed5156d319d2da33d10d86db2f79123f739c6 100644
(file)
--- a/
lunaix-os/kernel/ds/buffer.c
+++ b/
lunaix-os/kernel/ds/buffer.c
@@
-2,18
+2,19
@@
#include <lunaix/mm/valloc.h>
struct vecbuf*
#include <lunaix/mm/valloc.h>
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* vbuf = valloc(sizeof(struct vecbuf));
+ struct vecbuf* _vec = *vec;
- *vbuf =
-
(struct vecbuf){ .buf = { .buffer = buf, .size = size }, .acc_sz = 0
};
+ *vbuf =
(struct vecbuf){ .buf = { .buffer = buf, .size = size },
+
.acc_sz = vbuf_size(_vec) + size
};
- if (vec) {
- vbuf->acc_sz = vbuf_size(vec) + size;
- llist_append(&vec->components, &vbuf->components);
+ if (_vec) {
+ llist_append(&_vec->components, &vbuf->components);
} else {
} else {
- llist_init_head(&vec->components);
+ llist_init_head(&vbuf->components);
+ *vec = vbuf;
}
return vbuf;
}
return vbuf;