diff options
| -rw-r--r-- | src/engine/e_ringbuffer.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/engine/e_ringbuffer.c b/src/engine/e_ringbuffer.c index 512c5946..f6f529f8 100644 --- a/src/engine/e_ringbuffer.c +++ b/src/engine/e_ringbuffer.c @@ -184,6 +184,11 @@ void *ringbuf_prev(RINGBUFFER *rb, void *current) void *ringbuf_next(RINGBUFFER *rb, void *current) { RBITEM *item = ((RBITEM *)current) - 1; + + /* we have gone around */ + if(item == rb->last_alloc) + return 0; + while(1) { /* back up one step */ @@ -191,10 +196,6 @@ void *ringbuf_next(RINGBUFFER *rb, void *current) if(!item) item = rb->first; - /* we have gone around */ - if(item == rb->last_alloc) - return 0; - if(!(item->flags&RBFLAG_FREE)) return item+1; } |