fix resizing of buffer
[ecparse.git] / GrowingBuffer.cpp
index a260a3d..2841741 100644 (file)
@@ -58,7 +58,7 @@ void GrowingBuffer::write(const void* buffer, size_t length) {
                } 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;
        }
@@ -98,3 +98,13 @@ void GrowingBuffer::resize(double factor) {
        }
 }
 
+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;
+}
+