py/vstr: vstr_null_terminated_str(): Extend string by at most one byte.
vstr_null_terminated_str is almost certainly a vstr finalization operation, so it should add the requested NUL byte, and not try to pre-allocate more. The previous implementation could actually allocate double of the buffer size.
This commit is contained in:
parent
6de8dbb488
commit
a1f2245a81
@ -181,9 +181,15 @@ char *vstr_add_len(vstr_t *vstr, size_t len) {
|
|||||||
|
|
||||||
// Doesn't increase len, just makes sure there is a null byte at the end
|
// Doesn't increase len, just makes sure there is a null byte at the end
|
||||||
char *vstr_null_terminated_str(vstr_t *vstr) {
|
char *vstr_null_terminated_str(vstr_t *vstr) {
|
||||||
if (vstr->had_error || !vstr_ensure_extra(vstr, 1)) {
|
if (vstr->had_error) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
// If there's no more room, add single byte
|
||||||
|
if (vstr->alloc == vstr->len) {
|
||||||
|
if (vstr_extend(vstr, 1) == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
vstr->buf[vstr->len] = '\0';
|
vstr->buf[vstr->len] = '\0';
|
||||||
return vstr->buf;
|
return vstr->buf;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user