aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/store.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/libstore/store.cc b/src/libstore/store.cc
index 4e531bc41..d61c3e454 100644
--- a/src/libstore/store.cc
+++ b/src/libstore/store.cc
@@ -737,10 +737,10 @@ void deleteFromStore(const Path & _path)
Transaction txn(nixDB);
if (isValidPathTxn(txn, path)) {
PathSet referers = getReferers(txn, path);
- if (referers.size() > 1 ||
- (referers.size() == 1 &&
- *referers.begin() != path))
- throw Error(format("cannot delete path `%1%' because it is in use") % path);
+ for (PathSet::iterator i = referers.begin();
+ i != referers.end(); ++i)
+ if (*i != path && isValidPathTxn(txn, *i))
+ throw Error(format("cannot delete path `%1%' because it is in use by path `%2%'") % path % *i);
invalidatePath(txn, path);
}
txn.commit();