@@ -125,23 +125,27 @@ struct pollfd *FDsCArray; size_t i, nFDs; [self _processQueue]; - if ([self _processCache]) + if ([self _processCache]) { + [pool release]; return YES; + } FDsCArray = [FDs cArray]; nFDs = [FDs count]; #ifdef OPEN_MAX if (nFDs > OPEN_MAX) @throw [OFOutOfRangeException exceptionWithClass: isa]; #endif - if (poll(FDsCArray, (nfds_t)nFDs, timeout) < 1) + if (poll(FDsCArray, (nfds_t)nFDs, timeout) < 1) { + [pool release]; return NO; + } for (i = 0; i < nFDs; i++) { if (FDsCArray[i].revents & POLLIN) { if (FDsCArray[i].fd == cancelFD[0]) { char buffer;