aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2011-11-06 00:13:09 +0000
committerShea Levy <shea@shealevy.com>2011-11-06 00:13:09 +0000
commit2721e9f56f92f5bd630dcbb0104fc56159cb28d4 (patch)
treef46ac1a8807b81cc54d176e8fb72915aa057f0ac /src/libexpr
parentbffe35acedafcd7c7237cb1415798362bff8a180 (diff)
parenta6a3f3a8c26fdd6900880c13e924e6879d6c714c (diff)
Merge from trunk
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/eval.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index c31ec261e..64e6cbe64 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";
}