diff options
author | Kane York <kanepyork@gmail.com> | 2020-08-01T21·11-0700 |
---|---|---|
committer | kanepyork <rikingcoding@gmail.com> | 2020-08-01T21·16+0000 |
commit | f7a85c5060301bcbd2fb71881de8b65226cacd81 (patch) | |
tree | d4ef8b9552d8e8f7124347137cc48152b7af6416 /third_party/nix/src | |
parent | 3fdce7c6be52bd2b86bd8a75c06f27f94b753c4f (diff) |
fix(3p/nix/expr): use traceable_allocator for btree_map r/1530
The prior use of gc_allocator meant that the btree nodes themselves were being collected. Additionally, have Attr (contains a Value) and Bindings explicitly inherit from gc, even though Bindings is always allocated under `new (GC)`. Detected by running under GC_ENABLE_INCREMENTAL=1. Change-Id: Iacf13b34b5aa12e417ea87c9b46e2bf9199fdb26 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1544 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
Diffstat (limited to 'third_party/nix/src')
-rw-r--r-- | third_party/nix/src/libexpr/attr-set.hh | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/third_party/nix/src/libexpr/attr-set.hh b/third_party/nix/src/libexpr/attr-set.hh index b918bf30ffd2..a9db0db85644 100644 --- a/third_party/nix/src/libexpr/attr-set.hh +++ b/third_party/nix/src/libexpr/attr-set.hh @@ -14,7 +14,7 @@ class EvalState; struct Value; /* Map one attribute name to its value. */ -struct Attr { +struct Attr : public gc { Symbol name; Value* value; // TODO(tazjin): Who owns this? Pos* pos; // TODO(tazjin): Who owns this? @@ -26,9 +26,9 @@ struct Attr { // allocator explicitly specified. using AttributeMap = absl::btree_map<Symbol, Attr, std::less<Symbol>, - gc_allocator<std::pair<const Symbol, Attr>>>; + traceable_allocator<std::pair<const Symbol, Attr>>>; -class Bindings { +class Bindings : public gc { public: typedef AttributeMap::iterator iterator; |