mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-26 12:14:56 +00:00
Fix #1288 - better mg_iobuf_append allocation strategy
This commit is contained in:
1 parent
c0a8546330
commit
9d68e20dcc
3 files changed
+23
-8
No files matched your search
+7
-4
@@ -44,10 +44,13 @@ int mg_iobuf_init(struct mg_iobuf *io, size_t size) {
|
||||
|
||||
size_t mg_iobuf_append(struct mg_iobuf *io, const void *buf, size_t len,
|
||||
size_t chunk_size) {
|
||||
size_t new_size = io->len + len + chunk_size;
|
||||
new_size -= new_size % chunk_size;
|
||||
if (new_size != io->size) mg_iobuf_resize(io, new_size);
|
||||
if (new_size != io->size) len = 0; // Realloc failure, append nothing
|
||||
size_t new_size = io->len + len;
|
||||
if (new_size > io->size) {
|
||||
new_size += chunk_size;
|
||||
new_size -= new_size % chunk_size;
|
||||
if (new_size != io->size) mg_iobuf_resize(io, new_size);
|
||||
if (new_size != io->size) len = 0; // Realloc failure, append nothing
|
||||
}
|
||||
if (buf != NULL) memmove(io->buf + io->len, buf, len);
|
||||
io->len += len;
|
||||
return len;
|
||||
|
||||
Reference in new issue
Block a user