buffer->size - bytes_to_remove);
buffer->size -= bytes_to_remove;
}
+ buffer->data[buffer->size] = '\0';
}
void
bytes_to_remove = MIN (buffer->size, bytes_to_remove);
buffer->size -= bytes_to_remove;
+ buffer->data[buffer->size] = '\0';
}
ply_buffer_t *
void
ply_buffer_append_bytes (ply_buffer_t *buffer,
- const void *bytes,
+ const void *bytes_in,
size_t length)
{
assert (buffer != NULL);
- assert (bytes != NULL);
+ assert (bytes_in != NULL);
assert (length != 0);
-
- if ((buffer->size + length) >= buffer->capacity)
+
+ const uint8_t *bytes = bytes_in;
+
+ if (length >PLY_BUFFER_MAX_BUFFER_CAPACITY){
+ bytes += length - (PLY_BUFFER_MAX_BUFFER_CAPACITY-1);
+ length = (PLY_BUFFER_MAX_BUFFER_CAPACITY-1);
+ }
+
+ while ((buffer->size + length) >= buffer->capacity)
{
if (!ply_buffer_increase_capacity (buffer))
{
ply_buffer_remove_bytes (buffer, length);
-
- if ((buffer->size + length) >= buffer->capacity)
- if (!ply_buffer_increase_capacity (buffer))
- return;
}
}
bytes, length);
buffer->size += length;
+ buffer->data[buffer->size] = '\0';
}
void