diff --git a/ChangeLog b/ChangeLog index c26574e57..769288ac0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-09-21 Richard Frith-Macdonald + + * Source/NSConnection.m: ([_getReplyRmc:]) improve timeout code. + 2004-09-20 Richard Frith-Macdonald * Source/NSProxy.m: minor hash optimisation diff --git a/Source/NSConnection.m b/Source/NSConnection.m index 6cc4f3416..34b10722f 100644 --- a/Source/NSConnection.m +++ b/Source/NSConnection.m @@ -2703,7 +2703,8 @@ static void callEncoder (DOContext *ctxt) * of the loop. */ if ([runLoop runMode: NSConnectionReplyMode - beforeDate: limit_date] == NO) + beforeDate: limit_date] == NO + || [timeout_date timeIntervalSinceNow] <= 0.0) { if (limit_date == timeout_date) { @@ -2719,7 +2720,8 @@ static void callEncoder (DOContext *ctxt) * Normal operation - wait for data or for a timeout. */ if ([runLoop runMode: NSConnectionReplyMode - beforeDate: timeout_date] == NO) + beforeDate: timeout_date] == NO + || [timeout_data timeIntervalSinceNow] <= 0.0) { M_LOCK(_queueGate); isLocked = YES; node = GSIMapNodeForKey(_replyMap, (GSIMapKey)sn);