mirror of
https://github.com/janet-lang/janet
synced 2025-09-30 08:32:28 +00:00
Prevent buffer/trim from shrinking buffer to 0 bytes as well.
This commit is contained in:
@@ -199,19 +199,14 @@ static Janet cfun_buffer_fill(int32_t argc, Janet *argv) {
|
|||||||
static Janet cfun_buffer_trim(int32_t argc, Janet *argv) {
|
static Janet cfun_buffer_trim(int32_t argc, Janet *argv) {
|
||||||
janet_fixarity(argc, 1);
|
janet_fixarity(argc, 1);
|
||||||
JanetBuffer *buffer = janet_getbuffer(argv, 0);
|
JanetBuffer *buffer = janet_getbuffer(argv, 0);
|
||||||
if (buffer->count) {
|
|
||||||
if (buffer->count < buffer->capacity) {
|
if (buffer->count < buffer->capacity) {
|
||||||
uint8_t *newData = realloc(buffer->data, buffer->count);
|
int32_t newcap = buffer->count > 4 ? buffer->count : 4;
|
||||||
|
uint8_t *newData = realloc(buffer->data, newcap);
|
||||||
if (NULL == newData) {
|
if (NULL == newData) {
|
||||||
JANET_OUT_OF_MEMORY;
|
JANET_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
buffer->data = newData;
|
buffer->data = newData;
|
||||||
buffer->capacity = buffer->count;
|
buffer->capacity = newcap;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
buffer->capacity = 0;
|
|
||||||
free(buffer->data);
|
|
||||||
buffer->data = NULL;
|
|
||||||
}
|
}
|
||||||
return argv[0];
|
return argv[0];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user