aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/pool.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil/pool.hh')
-rw-r--r--src/libutil/pool.hh6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libutil/pool.hh b/src/libutil/pool.hh
index 0b142b059..d49067bb9 100644
--- a/src/libutil/pool.hh
+++ b/src/libutil/pool.hh
@@ -97,6 +97,7 @@ public:
private:
Pool & pool;
std::shared_ptr<R> r;
+ bool bad = false;
friend Pool;
@@ -112,7 +113,8 @@ public:
if (!r) return;
{
auto state_(pool.state.lock());
- state_->idle.push_back(ref<R>(r));
+ if (!bad)
+ state_->idle.push_back(ref<R>(r));
assert(state_->inUse);
state_->inUse--;
}
@@ -121,6 +123,8 @@ public:
R * operator -> () { return &*r; }
R & operator * () { return *r; }
+
+ void markBad() { bad = true; }
};
Handle get()