aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/patches/40-deque.patch
blob: 4f453d48de3c603b123acc53b6ab0bdbc4deab39 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
diff --git a/include/deque b/include/deque
index 6b6d8e2..951bab9 100644
--- a/include/deque
+++ b/include/deque
@@ -249,7 +249,9 @@ template <class _Tp, class _Allocator = allocator<_Tp> > class _LIBCPP_TEMPLATE_
 
 template <class _ValueType, class _DiffType>
 struct __deque_block_size {
-  static const _DiffType value = sizeof(_ValueType) < 256 ? 4096 / sizeof(_ValueType) : 16;
+  static const _DiffType __buf_size = 64 * sizeof(void*);
+  static const _DiffType value = (__buf_size / sizeof(_ValueType)) > 2 ? (__buf_size / sizeof(_ValueType)) : 2;
+  //static const _DiffType value = sizeof(_ValueType) < 256 ? 4096 / sizeof(_ValueType) : 16;
 };
 
 template <class _ValueType, class _Pointer, class _Reference, class _MapPointer,
@@ -853,7 +855,7 @@ public:
         _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                    __is_nothrow_swappable<allocator_type>::value);
 #endif
-    _LIBCPP_HIDE_FROM_ABI
+    _LIBCPP_REINITIALIZES_OBJECT _LIBCPP_HIDE_FROM_ABI
     void clear() _NOEXCEPT;
 
     _LIBCPP_HIDE_FROM_ABI
@@ -2836,6 +2838,7 @@ deque<_Tp, _Allocator>::swap(deque& __c)
 }
 
 template <class _Tp, class _Allocator>
+_LIBCPP_REINITIALIZES_OBJECT
 inline
 void
 deque<_Tp, _Allocator>::clear() _NOEXCEPT