From 62fe5c4a22453c763e967f04bda062df8241c487 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 11 Aug 2004 19:03:13 +0000 Subject: [PATCH] * The predecessor of a successor need not be present. This in particular happens on distributed builds or when using push/pull. --- src/libstore/normalise.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libstore/normalise.cc b/src/libstore/normalise.cc index 309c1777f7..b3282b146b 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; }