Kernel - Cleaning up unneeded malloc() calls
[tpg/acess2.git] / Kernel / adt.c
index 7a23834..77c8d99 100644 (file)
@@ -1,8 +1,13 @@
 /*
+ * Acess2 Kernel
+ * 
+ * adt.c
+ * - Complex data type code
  */
 #include <acess.h>
 #include <adt.h>
 
+
 // === CODE ===
 // --- Ring Buffers ---
 tRingBuffer *RingBuffer_Create(size_t Space)
@@ -22,17 +27,20 @@ size_t RingBuffer_Read(void *Dest, tRingBuffer *Buffer, size_t Length)
        {
                 int    endData = Buffer->Space - Buffer->Start;
                memcpy(Dest, &Buffer->Data[Buffer->Start], endData);
-               memcpy(Dest + endData, &Buffer->Data, Length - endData);
+               memcpy((Uint8*)Dest + endData, &Buffer->Data, Length - endData);
        }
        else
        {
                memcpy(Dest, &Buffer->Data[Buffer->Start], Length);
        }
+       Buffer->Start += Length;
+       if( Buffer->Start > Buffer->Space )
+               Buffer->Start -= Buffer->Space;
        Buffer->Length -= Length;
        return Length;
 }
 
-size_t RingBuffer_Write(tRingBuffer *Buffer, void *Source, size_t Length)
+size_t RingBuffer_Write(tRingBuffer *Buffer, const void *Source, size_t Length)
 {
        size_t  bufEnd = Buffer->Start + Buffer->Length;
        size_t  endSpace = Buffer->Space - bufEnd;
@@ -44,7 +52,7 @@ size_t RingBuffer_Write(tRingBuffer *Buffer, void *Source, size_t Length)
        if(endSpace < Length)
        {
                memcpy( &Buffer->Data[bufEnd], Source, endSpace );
-               memcpy( Buffer->Data, Source + endSpace, Length - endSpace );
+               memcpy( Buffer->Data, (Uint8*)Source + endSpace, Length - endSpace );
                Buffer->Length = Length - endSpace;
        }
        else

UCC git Repository :: git.ucc.asn.au