From 6ce867d70d51c2fcb01fb3cf607f34bbbf6d7d81 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 30 Jan 2003 15:48:41 +0000 Subject: [PATCH] fixed no termination from event remove loop if event queue is 100% full --- src/db/dbEvent.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/db/dbEvent.c b/src/db/dbEvent.c index b298edeed..1a0c0fb4c 100644 --- a/src/db/dbEvent.c +++ b/src/db/dbEvent.c @@ -531,13 +531,16 @@ void epicsShareAPI db_cancel_event (dbEventSubscription es) * would be possible. */ for ( getix = pevent->ev_que->getix; - pevent->ev_que->evque[getix] != EVENTQEMPTY; - getix = RNGINC ( getix ) ) { + pevent->ev_que->evque[getix] != EVENTQEMPTY; ) { if ( pevent->ev_que->evque[getix] == pevent ) { assert ( pevent->ev_que->nCanceled < USHRT_MAX ); pevent->ev_que->nCanceled++; event_remove ( pevent->ev_que, getix, &canceledEvent ); } + getix = RNGINC ( getix ); + if ( getix == pevent->ev_que->getix ) { + break; + } } assert ( pevent->npend == 0u );