fix buffer handling
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Jul 2008 18:43:47 +0000 (20:43 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Jul 2008 18:43:47 +0000 (20:43 +0200)
add logging

GrowingBuffer.cpp

index 2841741..719e793 100644 (file)
@@ -5,7 +5,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stddef.h>
 #include "GrowingBuffer.h"
 #include "GlobalSettings.h"
 
@@ -43,8 +42,8 @@ void GrowingBuffer::seek(size_t position) {
 
 void* GrowingBuffer::read(void* buffer, size_t length) {
        size_t bytesToCopy = (length > (limit - position)) ? (limit - position) : length;
-       GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] copying %d bytes (%d requested) into buffer.\n", __FILE__, __LINE__, bytesToCopy, length);
-       memcpy(buffer, (ptrdiff_t*) data + position, bytesToCopy);
+       GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] copying %d bytes (%d requested) into buffer from position %d.\n", __FILE__, __LINE__, bytesToCopy, length, position);
+       memcpy(buffer, (char*) data + position, bytesToCopy);
        GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] advancing position from %d to %d.\n", __FILE__, __LINE__, position, position + bytesToCopy);
        position += bytesToCopy;
        return buffer;
@@ -58,19 +57,20 @@ 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);
+               GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] copying %d bytes into new buffer.\n", __FILE__, __LINE__, limit);
                memcpy(newData, data, limit);
                free(data);
                data = newData;
        }
        GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] writing %d bytes to buffer at position %d.\n", __FILE__, __LINE__, length, limit);
-       memcpy((ptrdiff_t*) data + limit, buffer, length);
+       memcpy((char*) data + limit, buffer, length);
        limit += length;
 }
 
 void GrowingBuffer::cut() {
        GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] discarding %d bytes.\n", __FILE__, __LINE__, position);
-       memcpy(data, (ptrdiff_t*) data + position, position);
-       limit = position;
+       memcpy(data, (char*) data + position, position);
+       limit -= position;
        position = 0;
 }
 
@@ -101,10 +101,12 @@ 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));
+       GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] searching for (char) 0x%02x from %d to %d.\n", __FILE__, __LINE__, c, position + start, position + (limit - start));
+       foundIndex = memchr((char*) data + position + start, c, (limit - (position + start)));
        if (foundIndex) {
-               return (ptrdiff_t) foundIndex - ((ptrdiff_t) data + position);
+               GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] found character at %d.\n", __FILE__, __LINE__, (char*) foundIndex - ((char*) data + position));
+               return (char*) foundIndex - ((char*) data - position);
        }
-       return -1;
+       return (size_t) -1;
 }