diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 5acbf50d7..e94e64346 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -1212,18 +1212,16 @@ bool EvalState::getAttrField(Value & attrs, const std::vector & selector for (auto & name : selector) { nrLookups++; Bindings::iterator j; - forceValue(*vAttrs, pos); if (vAttrs->type() != nAttrs || (j = vAttrs->attrs->find(name)) == vAttrs->attrs->end()) { return false; } vAttrs = j->value; pos2 = j->pos; + forceValue(*vAttrs, pos2 != NULL ? *pos2 : pos ); if (countCalls && pos2) attrSelects[*pos2]++; } - forceValue(*vAttrs, ( pos2 != NULL ? *pos2 : pos ) ); - } catch (Error & e) { if (pos2 && pos2->file != sDerivationNix) { vector strSelector;