return size;
}
+size_t GrowingBuffer::getRemaining() {
+ return limit - position;
+}
+
void GrowingBuffer::seek(size_t position) {
this->position = (position > limit) ? limit : position;
GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] setting position to %d.\n", __FILE__, __LINE__, position);
}
void GrowingBuffer::cut() {
- GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] discarding %d bytes.\n", __FILE__, __LINE__, position);
- memcpy(data, (char*) data + position, position);
+ GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] discarding %d bytes, %d bytes remaining.\n", __FILE__, __LINE__, position, limit - position);
+ memmove(data, (char*) data + position, limit);
limit -= position;
position = 0;
}