Skip to content

Commit acd65f2

Browse files
authored
Merge pull request #3288 from cesanta/iobuf
fix iobuf shrink to less than current len
2 parents 2c5a6d4 + d55fb80 commit acd65f2

File tree

3 files changed

+4
-0
lines changed

3 files changed

+4
-0
lines changed

mongoose.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2608,6 +2608,7 @@ int mg_iobuf_resize(struct mg_iobuf *io, size_t new_size) {
26082608
mg_free(io->buf);
26092609
io->buf = (unsigned char *) p;
26102610
io->size = new_size;
2611+
io->len = len;
26112612
} else {
26122613
ok = 0;
26132614
MG_ERROR(("%lld->%lld", (uint64_t) io->size, (uint64_t) new_size));

src/iobuf.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ int mg_iobuf_resize(struct mg_iobuf *io, size_t new_size) {
2525
mg_free(io->buf);
2626
io->buf = (unsigned char *) p;
2727
io->size = new_size;
28+
io->len = len;
2829
} else {
2930
ok = 0;
3031
MG_ERROR(("%lld->%lld", (uint64_t) io->size, (uint64_t) new_size));

test/unit_test.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,8 @@ static void test_iobuf(void) {
322322
mg_iobuf_add(&io, io.len, "a", 1);
323323
ASSERT(io.buf != NULL && io.size == 20 && io.len == 11);
324324
ASSERT(memcmp(io.buf, "xhi!123456a", io.len) == 0);
325+
mg_iobuf_resize(&io, 1);
326+
ASSERT(io.buf != NULL && io.size == 10 && io.len == 10);
325327
mg_iobuf_free(&io);
326328
}
327329

0 commit comments

Comments
 (0)