Remove node from a container before destroying it. Thanks to Alexander Potapenko for pointing this out.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@206024 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/__tree b/include/__tree
index acf8759..8e5447a 100644
--- a/include/__tree
+++ b/include/__tree
@@ -1980,9 +1980,9 @@
         __begin_node() = __r.__ptr_;
     --size();
     __node_allocator& __na = __node_alloc();
-    __node_traits::destroy(__na, const_cast<value_type*>(_VSTD::addressof(*__p)));
     __tree_remove(__end_node()->__left_,
                   static_cast<__node_base_pointer>(__np));
+    __node_traits::destroy(__na, const_cast<value_type*>(_VSTD::addressof(*__p)));
     __node_traits::deallocate(__na, __np, 1);
     return __r;
 }