X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fadt.c;fp=Kernel%2Fadt.c;h=77c8d9953492f11a33653266c83cf3ea0029c227;hb=0f8226381e0a19e8e8e11eafbf4589532e45d430;hp=0f116f3cab06fdd9411d3e23f2a0a9ffd4e68325;hpb=78c95e08a952fa702ed95f69dca0670ca7f9d49e;p=tpg%2Facess2.git diff --git a/Kernel/adt.c b/Kernel/adt.c index 0f116f3c..77c8d995 100644 --- a/Kernel/adt.c +++ b/Kernel/adt.c @@ -1,8 +1,13 @@ /* + * Acess2 Kernel + * + * adt.c + * - Complex data type code */ #include #include + // === CODE === // --- Ring Buffers --- tRingBuffer *RingBuffer_Create(size_t Space) @@ -29,11 +34,13 @@ size_t RingBuffer_Read(void *Dest, tRingBuffer *Buffer, size_t Length) 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;