diff options
author | Qyriad <qyriad@qyriad.me> | 2024-07-16 09:32:03 -0600 |
---|---|---|
committer | Qyriad <qyriad@qyriad.me> | 2024-07-20 20:20:01 +0000 |
commit | 72ee25b4025257fdaab7b8e8d5d1ccc83858fdab (patch) | |
tree | f2bc182d76deeec662c407647069348af4bf2331 /src/libexpr/eval.cc | |
parent | e67dac1d7493741cf88b411f68e31fc496179bf2 (diff) |
libexpr: add a strongly typed version of gcAllocBytes()
This commit adds a new helper template function to gc-alloc.hh (which is
probably where you want to look at first, O great reviewer [custom file
ordering in review diffs when]), which uses a type argument to determine
the size to allocate, rather than making the caller use sizeof().
Change-Id: Ib5d138d91a28bdda304a80db24ea9fb08669ad22
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r-- | src/libexpr/eval.cc | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 06b1f27f5..c0e7a9a2e 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -777,8 +777,7 @@ static void copyContextToValue(Value & v, const NixStringContext & context) { if (!context.empty()) { size_t n = 0; - v.string.context = (const char * *) - gcAllocBytes((context.size() + 1) * sizeof(char *)); + v.string.context = gcAllocType<char const *>(context.size() + 1); for (auto & i : context) v.string.context[n++] = gcCopyStringIfNeeded(i.to_string()); v.string.context[n] = 0; @@ -834,7 +833,7 @@ void EvalState::mkList(Value & v, size_t size) { v.mkList(size); if (size > 2) - v.bigList.elems = (Value * *) gcAllocBytes(size * sizeof(Value *)); + v.bigList.elems = gcAllocType<Value *>(size); nrListElems += size; } |