From 5e8522b21c9bafea378c6d2d150a87fb398035db Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Wed, 13 Sep 1995 18:49:52 +0000 Subject: (_pager_seqnos_memory_object_lock_completed): Don't push the locks_pending field negative in the case where the pager was terminated before we get called. --- libpager/lock-completed.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'libpager') diff --git a/libpager/lock-completed.c b/libpager/lock-completed.c index 8a02d356..a83badd8 100644 --- a/libpager/lock-completed.c +++ b/libpager/lock-completed.c @@ -52,12 +52,16 @@ _pager_seqnos_memory_object_lock_completed (mach_port_t object, _pager_wait_for_seqno (p, seqno); for (lr = p->lock_requests; lr; lr = lr->next) - if (lr->start == offset && lr->end == offset + length - && !--lr->locks_pending && !lr->pending_writes) - break; - - if (lr) - condition_broadcast (&p->wakeup); + if (lr->start == offset && lr->end == offset + length) + { + if (lr->locks_pending) + { + --lr->locks_pending; + } + if (!lr->locks_pending && !lr->pending_writes) + condition_broadcast (&p->wakeup); + break; + } _pager_release_seqno (p, seqno); mutex_unlock (&p->interlock); -- cgit v1.2.3