diff options
Diffstat (limited to 'third_party/nix/src/libexpr/attr-set.cc')
-rw-r--r-- | third_party/nix/src/libexpr/attr-set.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/third_party/nix/src/libexpr/attr-set.cc b/third_party/nix/src/libexpr/attr-set.cc index 8b2af8639eff..e0fac9234b14 100644 --- a/third_party/nix/src/libexpr/attr-set.cc +++ b/third_party/nix/src/libexpr/attr-set.cc @@ -37,6 +37,14 @@ Bindings::iterator Bindings::find(const Symbol& name) { Bindings::iterator Bindings::begin() { return &(attributes_.begin()->second); } Bindings::iterator Bindings::end() { return &(attributes_.end()->second); } +void Bindings::merge(Bindings* other) { + // We want the values from the other attribute set to take + // precedence, but .merge() works the other way around. + // + // To work around that, we merge and then swap. + other->attributes_.merge(attributes_); + attributes_.swap(other->attributes_); +} // /* Allocate a new array of attributes for an attribute set with a specific // capacity. The space is implicitly reserved after the Bindings structure. |