Sebastian Lackner : hidclass.sys: Avoid magic constants in ringbuffer implementation.

Alexandre Julliard julliard at winehq.org
Thu Oct 27 14:27:57 CDT 2016


Module: wine
Branch: master
Commit: 115c69110d6796cf214ecf7f3dd3011c1da3f5a1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=115c69110d6796cf214ecf7f3dd3011c1da3f5a1

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Thu Oct 27 16:40:35 2016 +0200

hidclass.sys: Avoid magic constants in ringbuffer implementation.

Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Aric Stewart <aric at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/hidclass.sys/buffer.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/dlls/hidclass.sys/buffer.c b/dlls/hidclass.sys/buffer.c
index 23636e0..894853d 100644
--- a/dlls/hidclass.sys/buffer.c
+++ b/dlls/hidclass.sys/buffer.c
@@ -26,6 +26,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(hid);
 
+#define POINTER_UNUSED 0xffffffff
 #define BASE_BUFFER_SIZE 32
 #define MIN_BUFFER_SIZE 2
 #define MAX_BUFFER_SIZE 512
@@ -34,7 +35,7 @@ struct ReportRingBuffer
 {
     UINT start, end, size;
 
-    int *pointers;
+    UINT *pointers;
     UINT pointer_alloc;
     UINT buffer_size;
 
@@ -46,7 +47,10 @@ struct ReportRingBuffer
 struct ReportRingBuffer* RingBuffer_Create(UINT buffer_size)
 {
     struct ReportRingBuffer *ring;
+    int i;
+
     TRACE("Create Ring Buffer with buffer size %i\n",buffer_size);
+
     ring = HeapAlloc(GetProcessHeap(), 0, sizeof(*ring));
     if (!ring)
         return NULL;
@@ -54,13 +58,14 @@ struct ReportRingBuffer* RingBuffer_Create(UINT buffer_size)
     ring->size = BASE_BUFFER_SIZE;
     ring->buffer_size = buffer_size;
     ring->pointer_alloc = 2;
-    ring->pointers = HeapAlloc(GetProcessHeap(), 0, sizeof(int) * ring->pointer_alloc);
+    ring->pointers = HeapAlloc(GetProcessHeap(), 0, sizeof(UINT) * ring->pointer_alloc);
     if (!ring->pointers)
     {
         HeapFree(GetProcessHeap(), 0, ring);
         return NULL;
     }
-    memset(ring->pointers, 0xff, sizeof(int) * ring->pointer_alloc);
+    for (i = 0; i < ring->pointer_alloc; i++)
+        ring->pointers[i] = POINTER_UNUSED;
     ring->buffer = HeapAlloc(GetProcessHeap(), 0, buffer_size * ring->size);
     if (!ring->buffer)
     {
@@ -104,7 +109,7 @@ NTSTATUS RingBuffer_SetSize(struct ReportRingBuffer *ring, UINT size)
     ring->start = ring->end = 0;
     for (i = 0; i < ring->pointer_alloc; i++)
     {
-        if (ring->pointers[i] != 0xffffffff)
+        if (ring->pointers[i] != POINTER_UNUSED)
             ring->pointers[i] = 0;
     }
     new_buffer = HeapAlloc(GetProcessHeap(), 0, ring->buffer_size * size);
@@ -125,7 +130,7 @@ void RingBuffer_Read(struct ReportRingBuffer *ring, UINT index, void *output, UI
     void *ret = NULL;
 
     EnterCriticalSection(&ring->lock);
-    if (index >= ring->pointer_alloc || ring->pointers[index] == 0xffffffff)
+    if (index >= ring->pointer_alloc || ring->pointers[index] == POINTER_UNUSED)
     {
         LeaveCriticalSection(&ring->lock);
         *size = 0;
@@ -153,15 +158,15 @@ UINT RingBuffer_AddPointer(struct ReportRingBuffer *ring)
     UINT idx;
     EnterCriticalSection(&ring->lock);
     for (idx = 0; idx < ring->pointer_alloc; idx++)
-        if (ring->pointers[idx] == -1)
+        if (ring->pointers[idx] == POINTER_UNUSED)
             break;
     if (idx >= ring->pointer_alloc)
     {
         int count = idx = ring->pointer_alloc;
         ring->pointer_alloc *= 2;
-        ring->pointers = HeapReAlloc(GetProcessHeap(), 0, ring->pointers, sizeof(int) * ring->pointer_alloc);
+        ring->pointers = HeapReAlloc(GetProcessHeap(), 0, ring->pointers, sizeof(UINT) * ring->pointer_alloc);
         for( ;count < ring->pointer_alloc; count++)
-            ring->pointers[count] = -1;
+            ring->pointers[count] = POINTER_UNUSED;
     }
     ring->pointers[idx] = ring->start;
     LeaveCriticalSection(&ring->lock);
@@ -172,7 +177,7 @@ void RingBuffer_RemovePointer(struct ReportRingBuffer *ring, UINT index)
 {
     EnterCriticalSection(&ring->lock);
     if (index < ring->pointer_alloc)
-        ring->pointers[index] = 0xffffffff;
+        ring->pointers[index] = POINTER_UNUSED;
     LeaveCriticalSection(&ring->lock);
 }
 




More information about the wine-cvs mailing list