From b39ab10749d0906584df9e94f3284148bd296eee Mon Sep 17 00:00:00 2001 From: regnat Date: Thu, 3 Jun 2021 15:27:03 +0200 Subject: [PATCH] Properly fill the cache in case of a miss/forward --- src/libexpr/eval.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 67c0e6d65..d7c1f65fb 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -1199,7 +1199,9 @@ bool EvalState::getAttrField(Value & attrs, const std::vector & selector if (cacheResult.lastQueriedSymbolIfMissing) return false; return true; - case ValueCache::CacheMiss: // FIXME: Handle properly + case ValueCache::CacheMiss: + resultingCursor = eval_cache; + break; case ValueCache::Forward: // FIXME: Handle properly case ValueCache::NoCacheKey: case ValueCache::UnCacheable: @@ -1234,6 +1236,9 @@ bool EvalState::getAttrField(Value & attrs, const std::vector & selector throw; } + if (cacheResult.returnCode == ValueCache::Forward) + vAttrs->setEvalCache(resultingCursor); + dest = *vAttrs; return true; }