aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2004-08-11 19:03:13 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2004-08-11 19:03:13 +0000
commit62fe5c4a22453c763e967f04bda062df8241c487 (patch)
tree60697c4c48402fb3f7b32260e19420edd973cff9 /src
parentae1a1efa410fa66a0afbfae25ad423feee4b1e77 (diff)
* The predecessor of a successor need not be present. This in
particular happens on distributed builds or when using push/pull.
Diffstat (limited to 'src')
-rw-r--r--src/libstore/normalise.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libstore/normalise.cc b/src/libstore/normalise.cc
index 309c1777f..b3282b146 100644
--- a/src/libstore/normalise.cc
+++ b/src/libstore/normalise.cc
@@ -297,11 +297,13 @@ const char * * strings2CharPtrs(const Strings & ss)
/* Should only be called after an expression has been normalised. */
Path queryNormalForm(const Path & nePath)
{
- StoreExpr ne = storeExprFromPath(nePath);
- if (ne.type == StoreExpr::neClosure) return nePath;
Path nfPath;
- if (!querySuccessor(nePath, nfPath)) abort();
- return nfPath;
+ if (querySuccessor(nePath, nfPath)) return nfPath;
+ /* If there is no successor, than nePath must be a normal form
+ itself. */
+ StoreExpr ne = storeExprFromPath(nePath);
+ if (ne.type != StoreExpr::neClosure) abort();
+ return nePath;
}