diff options
Diffstat (limited to 'libadhocutil/resourcePool.impl.h')
-rw-r--r-- | libadhocutil/resourcePool.impl.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libadhocutil/resourcePool.impl.h b/libadhocutil/resourcePool.impl.h index b5d7e2f..dfdd72d 100644 --- a/libadhocutil/resourcePool.impl.h +++ b/libadhocutil/resourcePool.impl.h @@ -193,7 +193,13 @@ namespace AdHoc { ResourcePool<R>::get() { poolSize.wait(); - return getOne(); + try { + return getOne(); + } + catch(...) { + poolSize.notify(); + throw; + } } template <typename R> @@ -203,7 +209,13 @@ namespace AdHoc { if (!poolSize.wait(timeout)) { throw TimeOutOnResourcePoolT<R>(); } - return getOne(); + try { + return getOne(); + } + catch(...) { + poolSize.notify(); + throw; + } } template <typename R> |