} while (length > (newSize - limit));
GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] resizing buffer from %d to %d bytes to fit in %d bytes.\n", __FILE__, __LINE__, size, newSize, length);
void* newData = malloc(newSize);
- memcpy(newData, data, position);
+ memcpy(newData, data, limit);
free(data);
data = newData;
}
}
}
+size_t GrowingBuffer::indexOf(char c, size_t start) {
+ void* foundIndex;
+
+ foundIndex = memchr((ptrdiff_t*) data + position + start, c, (limit - start));
+ if (foundIndex) {
+ return (ptrdiff_t) foundIndex - ((ptrdiff_t) data + position);
+ }
+ return -1;
+}
+