diff options
author | Shea Levy <shea@shealevy.com> | 2011-11-06T00·13+0000 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2011-11-06T00·13+0000 |
commit | 2721e9f56f92f5bd630dcbb0104fc56159cb28d4 (patch) | |
tree | f46ac1a8807b81cc54d176e8fb72915aa057f0ac /src/libexpr | |
parent | bffe35acedafcd7c7237cb1415798362bff8a180 (diff) | |
parent | a6a3f3a8c26fdd6900880c13e924e6879d6c714c (diff) |
Merge from trunk
Diffstat (limited to 'src/libexpr')
-rw-r--r-- | src/libexpr/eval.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index c31ec261e318..64e6cbe6419b 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -171,8 +171,8 @@ EvalState::EvalState() size_t size = 32 * 1024 * 1024; #if HAVE_SYSCONF && defined(_SC_PAGESIZE) && defined(_SC_PHYS_PAGES) long pageSize = sysconf(_SC_PAGESIZE); - long pages = sysconf (_SC_PHYS_PAGES); - if (pageSize != -1 && size != -1) + long pages = sysconf(_SC_PHYS_PAGES); + if (pageSize != -1) size = (pageSize * pages) / 4; // 25% of RAM if (size > maxSize) size = maxSize; #endif @@ -1109,7 +1109,10 @@ bool EvalState::isDerivation(Value & v) { if (v.type != tAttrs) return false; Bindings::iterator i = v.attrs->find(sType); - return i != v.attrs->end() && forceStringNoCtx(*i->value) == "derivation"; + if (i == v.attrs->end()) return false; + forceValue(*i->value); + if (i->value->type != tString) return false; + return forceStringNoCtx(*i->value) == "derivation"; } |