minor buffer object optimization

This commit is contained in:
Francesco Cozzuto
2021-12-08 18:15:59 +01:00
parent dbf1c325b0
commit 2a0af0f9bd
3 changed files with 101 additions and 6 deletions
+13 -5
View File
@@ -111,15 +111,18 @@ Object *Object_SliceBuffer(Object *buffer, int offset, int length, Heap *heap, E
return NULL;
}
BufferSliceObject *slice = (BufferSliceObject*) Heap_Malloc(heap, &t_buffer_slice, error);
if(slice == NULL)
return NULL;
if(buffer->type == &t_buffer)
{
BufferObject *original = (BufferObject*) buffer;
if(offset == 0 && length == original->size)
return buffer;
BufferSliceObject *slice = (BufferSliceObject*) Heap_Malloc(heap, &t_buffer_slice, error);
if(slice == NULL)
return NULL;
if(offset < 0 || offset >= original->size)
{
Error_Report(error, 0, "offset out of range");
@@ -146,6 +149,11 @@ Object *Object_SliceBuffer(Object *buffer, int offset, int length, Heap *heap, E
{
assert(buffer->type == &t_buffer_slice);
BufferSliceObject *slice = (BufferSliceObject*) Heap_Malloc(heap, &t_buffer_slice, error);
if(slice == NULL)
return NULL;
BufferSliceObject *original = (BufferSliceObject*) buffer;
if(offset < 0 || offset >= original->length)