From b767972313677971bd96b20a72488ec9f2142747 Mon Sep 17 00:00:00 2001 From: Andrew Kryczka Date: Tue, 29 Aug 2017 11:57:59 -0700 Subject: [PATCH] avoid use-after-move error Summary: * db/range_del_aggregator.cc (AddTombstone): Avoid a potential use-after-move bug. The original code would both use and move `tombstone` in a context where the order of those operations is not specified. The fix is to perform the use on a new, preceding statement. Author: meyering Closes https://github.com/facebook/rocksdb/pull/2796 Differential Revision: D5721163 Pulled By: ajkr fbshipit-source-id: a1d328d6a77a17c6425e8069860a202e615e2f48 --- db/range_del_aggregator.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/range_del_aggregator.cc b/db/range_del_aggregator.cc index 0aa5d22cb..cb51ea7f8 100644 --- a/db/range_del_aggregator.cc +++ b/db/range_del_aggregator.cc @@ -357,7 +357,8 @@ Status RangeDelAggregator::AddTombstone(RangeTombstone tombstone) { ++new_range_dels_iter; } } else { - tombstone_map.emplace(tombstone.start_key_, std::move(tombstone)); + auto start_key = tombstone.start_key_; + tombstone_map.emplace(start_key, std::move(tombstone)); } return Status::OK(); }