passenger 6.2.1 → 6.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +37 -15
  3. data/build/cxx_tests.rb +2 -0
  4. data/build/support/cxx_dependency_map.rb +3 -63
  5. data/src/agent/Core/Config.h +1 -1
  6. data/src/agent/Core/Controller/Config.h +1 -1
  7. data/src/agent/Shared/ApiServerUtils.h +1 -1
  8. data/src/agent/Watchdog/Config.h +1 -1
  9. data/src/apache2_module/Hooks.cpp +13 -0
  10. data/src/apache2_module/Utils.h +14 -0
  11. data/src/cxx_supportlib/Constants.h +1 -1
  12. data/src/cxx_supportlib/FileTools/FileManip.cpp +27 -3
  13. data/src/cxx_supportlib/InstanceDirectory.h +30 -3
  14. data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
  15. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
  16. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
  17. data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
  18. data/src/cxx_supportlib/ServerKit/llerrors.h +3 -3
  19. data/src/cxx_supportlib/ServerKit/llversion.h +1 -1
  20. data/src/cxx_supportlib/{ServerKit/llhttp_api.c → vendor-copy/llhttp/api.c} +30 -23
  21. data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.c +1756 -1645
  22. data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.h +35 -13
  23. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +19 -0
  24. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
  25. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +0 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +20 -13
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +2 -2
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +4 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +1 -1
  30. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/debug.hpp +4 -0
  31. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  32. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -1
  33. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  34. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +1 -1
  35. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  36. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +1 -1
  37. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  38. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +10 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +5 -3
  40. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +1 -1
  41. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +5 -0
  42. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +57 -53
  43. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -10
  44. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -2
  45. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +14 -2
  46. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +176 -2287
  47. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +13 -9
  48. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +186 -70
  49. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +2 -2
  50. data/src/cxx_supportlib/vendor-modified/boost/container/detail/aligned_allocation.hpp +149 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +35 -0
  52. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +1 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/container/detail/bit_utilities.hpp +133 -0
  54. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +18 -3
  55. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +5 -0
  56. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +4 -0
  57. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +1 -1
  58. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +20 -10
  59. data/src/cxx_supportlib/vendor-modified/boost/container/detail/deque_impl.hpp +2744 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +202 -104
  61. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +5 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +161 -85
  63. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_constructible.hpp +180 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +3 -2
  65. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +12 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +16 -0
  67. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +9 -1
  69. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +18 -14
  70. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +256 -41
  71. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +75 -24
  72. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +1 -56
  73. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +16 -3
  74. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -7
  75. data/src/cxx_supportlib/vendor-modified/boost/container/detail/range_utils.hpp +196 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +33 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +124 -69
  78. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +109 -7
  79. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +168 -162
  80. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/nest.hpp +2978 -0
  81. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/pmr/nest.hpp +45 -0
  82. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_all_of.hpp +43 -0
  83. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_any_of.hpp +42 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy.hpp +229 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_if.hpp +270 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_n.hpp +308 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count.hpp +101 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count_if.hpp +100 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_equal.hpp +268 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill.hpp +101 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill_n.hpp +171 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find.hpp +110 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if.hpp +110 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if_not.hpp +43 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last.hpp +179 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if.hpp +179 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if_not.hpp +43 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_for_each.hpp +92 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate.hpp +90 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate_n.hpp +162 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp +46 -0
  102. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted.hpp +49 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp +169 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_iterator_traits.hpp +382 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_merge.hpp +428 -0
  106. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_mismatch.hpp +350 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_none_of.hpp +98 -0
  108. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition.hpp +296 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp +105 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp +116 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove.hpp +57 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp +207 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp +223 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_if.hpp +57 -0
  115. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace.hpp +90 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace_if.hpp +90 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse.hpp +245 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse_copy.hpp +229 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search.hpp +211 -0
  120. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search_n.hpp +476 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_difference.hpp +300 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_intersection.hpp +287 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_symmetric_difference.hpp +306 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_union.hpp +294 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp +153 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp +92 -0
  127. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_transform.hpp +93 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/wrapped_iterator.hpp +142 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +642 -417
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +141 -30
  131. data/src/cxx_supportlib/vendor-modified/boost/container/hub.hpp +2426 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +65 -57
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +247 -68
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +7 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +39 -33
  136. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +156 -23
  137. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +3 -3
  138. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/hub.hpp +43 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +5 -3
  140. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +4 -0
  143. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/segtor.hpp +45 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +5 -4
  145. data/src/cxx_supportlib/vendor-modified/boost/container/segtor.hpp +905 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +148 -35
  147. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +59 -52
  148. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +632 -5
  149. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +66 -60
  150. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +46 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +612 -317
  152. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +54 -111
  153. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_construction.hpp +100 -0
  154. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +1 -3
  155. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +233 -116
  156. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +17 -10
  158. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +16 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/encoder.hpp +114 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +4 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +211 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +59 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +6 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +34 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +0 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -3
  169. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +29 -174
  171. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +18 -2
  172. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +0 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +4 -5
  174. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +20 -11
  175. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +42 -14
  176. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +58 -22
  177. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +3 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +5 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +8 -2
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +9 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +11 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +9 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/config.hpp +22 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +15 -7
  185. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +23 -11
  186. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +11 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +9 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +11 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +10 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +8 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/{detail → lexical_cast/detail}/lcast_precision.hpp +13 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +11 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -2
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +15 -2
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +11 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +48 -46
  198. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +23 -0
  199. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  200. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +12 -4
  201. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +76 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +11 -0
  204. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +58 -37
  205. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +1 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +17 -9
  207. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +1 -2
  208. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +6 -0
  209. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +6 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_common_defs.hpp +188 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +0 -6
  213. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_nonmember_interface.hpp +117 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +108 -83
  216. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +39 -39
  217. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_select_implementation.hpp +37 -0
  218. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +8 -8
  220. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/union_optional.hpp +724 -0
  221. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +93 -220
  222. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +14 -4
  223. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -6
  228. data/src/cxx_supportlib/vendor-modified/boost/system/api_config.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -13
  231. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -5
  232. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +3 -2
  233. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +3 -2
  234. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +2 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +30 -28
  237. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +6 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +5 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +1 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +16 -16
  241. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +26 -26
  242. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +196 -6
  243. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +191 -6
  244. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +196 -5
  245. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +192 -5
  246. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +3 -3
  247. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2 -2
  248. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +3 -3
  249. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +52 -16
  250. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/ranges_support.hpp +104 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +1 -14
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unordered_printers.hpp +10 -4
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +121 -3
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +118 -3
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +338 -1
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +121 -3
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +118 -3
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +333 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  260. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +276 -143
  261. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1262 -771
  262. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1704 -1586
  263. data/src/nginx_module/ContentHandler.c +35 -0
  264. data/src/ruby_supportlib/phusion_passenger/common_library.rb +6 -6
  265. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +25 -2
  266. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +12 -1
  267. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  268. metadata +73 -8
  269. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +0 -41
  270. /data/src/cxx_supportlib/{ServerKit/llhttp_http.c → vendor-copy/llhttp/http.c} +0 -0
@@ -150,25 +150,30 @@ class adaptive_pool
150
150
 
151
151
  //!Returns the number of elements that could be allocated.
152
152
  //!Never throws
153
+ BOOST_CONTAINER_NODISCARD
153
154
  size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
154
155
  { return size_type(-1)/(2u*sizeof(T)); }
155
156
 
156
157
  //!Allocate memory for an array of count elements.
157
158
  //!Throws bad_alloc if there is no enough memory
158
- pointer allocate(size_type count, const void * = 0)
159
+ BOOST_CONTAINER_NODISCARD
160
+ pointer allocate(size_type count)
159
161
  {
160
- if(BOOST_UNLIKELY(count > size_type(-1)/(2u*sizeof(T))))
162
+ if(BOOST_UNLIKELY(count > this->max_size()))
161
163
  boost::container::throw_bad_alloc();
162
164
 
163
- if(Version == 1 && count == 1){
165
+ BOOST_IF_CONSTEXPR(Version == 1)
166
+ if(count == 1){
164
167
  typedef typename dtl::shared_adaptive_node_pool
165
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
168
+ < sizeof(T), NodesPerBlock, MaxFreeBlocks
169
+ , OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
166
170
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
167
171
  return pointer(static_cast<T*>(singleton_t::instance().allocate_node()));
168
172
  }
169
- else{
170
- return static_cast<pointer>(dlmalloc_malloc(count*sizeof(T)));
171
- }
173
+ void *ret = dlmalloc_memalign(count*sizeof(T), dtl::alignment_of<T>::value);
174
+ if(BOOST_UNLIKELY(!ret))
175
+ boost::container::throw_bad_alloc();
176
+ return static_cast<pointer>(ret);
172
177
  }
173
178
 
174
179
  //!Deallocate allocated memory.
@@ -176,22 +181,22 @@ class adaptive_pool
176
181
  void deallocate(const pointer &ptr, size_type count) BOOST_NOEXCEPT_OR_NOTHROW
177
182
  {
178
183
  (void)count;
179
- if(Version == 1 && count == 1){
184
+ BOOST_IF_CONSTEXPR(Version == 1)
185
+ if(count == 1){
180
186
  typedef dtl::shared_adaptive_node_pool
181
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
187
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
182
188
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
183
189
  singleton_t::instance().deallocate_node(ptr);
190
+ return;
184
191
  }
185
- else{
186
- dlmalloc_free(ptr);
187
- }
192
+ dlmalloc_free(ptr);
188
193
  }
189
194
 
190
- pointer allocation_command(allocation_type command,
191
- size_type limit_size,
192
- size_type &prefer_in_recvd_out_size,
193
- pointer &reuse)
195
+ BOOST_CONTAINER_NODISCARD
196
+ pointer allocation_command
197
+ (allocation_type command, size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
194
198
  {
199
+ BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
195
200
  pointer ret = this->priv_allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse);
196
201
  if(BOOST_UNLIKELY(!ret && !(command & BOOST_CONTAINER_NOTHROW_ALLOCATION)))
197
202
  boost::container::throw_bad_alloc();
@@ -200,16 +205,21 @@ class adaptive_pool
200
205
 
201
206
  //!Returns maximum the number of objects the previously allocated memory
202
207
  //!pointed by p can hold.
208
+ BOOST_CONTAINER_NODISCARD
203
209
  size_type size(pointer p) const BOOST_NOEXCEPT_OR_NOTHROW
204
- { return dlmalloc_size(p); }
210
+ {
211
+ BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
212
+ return dlmalloc_size(p);
213
+ }
205
214
 
206
215
  //!Allocates just one object. Memory allocated with this function
207
216
  //!must be deallocated only with deallocate_one().
208
217
  //!Throws bad_alloc if there is no enough memory
218
+ BOOST_CONTAINER_NODISCARD
209
219
  pointer allocate_one()
210
220
  {
211
221
  typedef dtl::shared_adaptive_node_pool
212
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
222
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
213
223
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
214
224
  return (pointer)singleton_t::instance().allocate_node();
215
225
  }
@@ -218,8 +228,9 @@ class adaptive_pool
218
228
  //!Elements must be individually deallocated with deallocate_one()
219
229
  void allocate_individual(std::size_t num_elements, multiallocation_chain &chain)
220
230
  {
231
+ BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
221
232
  typedef dtl::shared_adaptive_node_pool
222
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
233
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
223
234
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
224
235
  singleton_t::instance().allocate_nodes(num_elements, static_cast<typename shared_pool_t::multiallocation_chain&>(chain));
225
236
  //typename shared_pool_t::multiallocation_chain ch;
@@ -233,16 +244,18 @@ class adaptive_pool
233
244
  //!with other functions different from allocate_one(). Never throws
234
245
  void deallocate_one(pointer p) BOOST_NOEXCEPT_OR_NOTHROW
235
246
  {
247
+ BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
236
248
  typedef dtl::shared_adaptive_node_pool
237
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
249
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
238
250
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
239
251
  singleton_t::instance().deallocate_node(p);
240
252
  }
241
253
 
242
254
  void deallocate_individual(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
243
255
  {
256
+ BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
244
257
  typedef dtl::shared_adaptive_node_pool
245
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
258
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
246
259
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
247
260
  //typename shared_pool_t::multiallocation_chain ch(&*chain.begin(), &*chain.last(), chain.size());
248
261
  //singleton_t::instance().deallocate_nodes(ch);
@@ -305,7 +318,7 @@ class adaptive_pool
305
318
  static void deallocate_free_blocks() BOOST_NOEXCEPT_OR_NOTHROW
306
319
  {
307
320
  typedef dtl::shared_adaptive_node_pool
308
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> shared_pool_t;
321
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent, dtl::alignment_of<T>::value> shared_pool_t;
309
322
  typedef dtl::singleton_default<shared_pool_t> singleton_t;
310
323
  singleton_t::instance().deallocate_free_blocks();
311
324
  }
@@ -317,11 +330,13 @@ class adaptive_pool
317
330
 
318
331
  //!An allocator always compares to true, as memory allocated with one
319
332
  //!instance can be deallocated by another instance
333
+ BOOST_CONTAINER_NODISCARD
320
334
  friend bool operator==(const adaptive_pool &, const adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
321
335
  { return true; }
322
336
 
323
337
  //!An allocator always compares to false, as memory allocated with one
324
338
  //!instance can be deallocated by another instance
339
+ BOOST_CONTAINER_NODISCARD
325
340
  friend bool operator!=(const adaptive_pool &, const adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
326
341
  { return false; }
327
342
 
@@ -340,7 +355,8 @@ class adaptive_pool
340
355
  std::size_t r_size;
341
356
  {
342
357
  void* reuse_ptr_void = reuse_ptr;
343
- ret = dlmalloc_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr_void);
358
+ ret = dlmalloc_allocation_command( command, sizeof(T), dtl::alignment_of<T>::value
359
+ , l_size, p_size, &r_size, reuse_ptr_void);
344
360
  reuse_ptr = ret.second ? static_cast<T*>(reuse_ptr_void) : 0;
345
361
  }
346
362
  prefer_in_recvd_out_size = r_size/sizeof(T);
@@ -348,30 +364,11 @@ class adaptive_pool
348
364
  }
349
365
  };
350
366
 
351
-
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
367
  template < class T
371
368
  , std::size_t NodesPerBlock = ADP_nodes_per_block
372
369
  , std::size_t MaxFreeBlocks = ADP_max_free_blocks
373
370
  , std::size_t OverheadPercent = ADP_overhead_percent
374
- , unsigned Version = 2
371
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I unsigned Version = 2)
375
372
  >
376
373
  class private_adaptive_pool
377
374
  {
@@ -392,7 +389,8 @@ class private_adaptive_pool
392
389
  BOOST_CONTAINER_DOCIGN(BOOST_CONTAINER_STATIC_ASSERT((Version <=2)));
393
390
 
394
391
  typedef dtl::private_adaptive_node_pool
395
- <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> pool_t;
392
+ < sizeof(T), NodesPerBlock, MaxFreeBlocks
393
+ , OverheadPercent, dtl::alignment_of<T>::value> pool_t;
396
394
  pool_t m_pool;
397
395
 
398
396
  public:
@@ -466,22 +464,23 @@ class private_adaptive_pool
466
464
 
467
465
  //!Returns the number of elements that could be allocated.
468
466
  //!Never throws
467
+ BOOST_CONTAINER_NODISCARD
469
468
  size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
470
469
  { return size_type(-1)/(2u*sizeof(T)); }
471
470
 
472
471
  //!Allocate memory for an array of count elements.
473
472
  //!Throws bad_alloc if there is no enough memory
473
+ BOOST_CONTAINER_NODISCARD
474
474
  pointer allocate(size_type count, const void * = 0)
475
475
  {
476
476
  if(BOOST_UNLIKELY(count > size_type(-1)/(2u*sizeof(T))))
477
477
  boost::container::throw_bad_alloc();
478
478
 
479
- if(Version == 1 && count == 1){
479
+ BOOST_IF_CONSTEXPR(Version == 1)
480
+ if(count == 1){
480
481
  return pointer(static_cast<T*>(m_pool.allocate_node()));
481
482
  }
482
- else{
483
- return static_cast<pointer>(dlmalloc_malloc(count*sizeof(T)));
484
- }
483
+ return static_cast<pointer>(dlmalloc_memalign(count*sizeof(T), dtl::alignment_of<T>::value));
485
484
  }
486
485
 
487
486
  //!Deallocate allocated memory.
@@ -489,14 +488,15 @@ class private_adaptive_pool
489
488
  void deallocate(const pointer &ptr, size_type count) BOOST_NOEXCEPT_OR_NOTHROW
490
489
  {
491
490
  (void)count;
492
- if(Version == 1 && count == 1){
491
+ BOOST_IF_CONSTEXPR(Version == 1)
492
+ if(count == 1){
493
493
  m_pool.deallocate_node(ptr);
494
+ return;
494
495
  }
495
- else{
496
- dlmalloc_free(ptr);
497
- }
496
+ dlmalloc_free(ptr);
498
497
  }
499
498
 
499
+ BOOST_CONTAINER_NODISCARD
500
500
  pointer allocation_command(allocation_type command,
501
501
  size_type limit_size,
502
502
  size_type &prefer_in_recvd_out_size,
@@ -516,6 +516,7 @@ class private_adaptive_pool
516
516
  //!Allocates just one object. Memory allocated with this function
517
517
  //!must be deallocated only with deallocate_one().
518
518
  //!Throws bad_alloc if there is no enough memory
519
+ BOOST_CONTAINER_NODISCARD
519
520
  pointer allocate_one()
520
521
  {
521
522
  return (pointer)m_pool.allocate_node();
@@ -583,11 +584,13 @@ class private_adaptive_pool
583
584
 
584
585
  //!An allocator always compares to true, as memory allocated with one
585
586
  //!instance can be deallocated by another instance
587
+ BOOST_CONTAINER_NODISCARD
586
588
  friend bool operator==(const private_adaptive_pool &, const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
587
589
  { return true; }
588
590
 
589
591
  //!An allocator always compares to false, as memory allocated with one
590
592
  //!instance can be deallocated by another instance
593
+ BOOST_CONTAINER_NODISCARD
591
594
  friend bool operator!=(const private_adaptive_pool &, const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
592
595
  { return false; }
593
596
 
@@ -606,7 +609,8 @@ class private_adaptive_pool
606
609
  std::size_t r_size;
607
610
  {
608
611
  void* reuse_ptr_void = reuse_ptr;
609
- ret = dlmalloc_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr_void);
612
+ ret = dlmalloc_allocation_command( command, sizeof(T), dtl::alignment_of<T>::value
613
+ , l_size, p_size, &r_size, reuse_ptr_void);
610
614
  reuse_ptr = ret.second ? static_cast<T*>(reuse_ptr_void) : 0;
611
615
  }
612
616
  prefer_in_recvd_out_size = r_size/sizeof(T);
@@ -179,12 +179,11 @@ class allocator
179
179
  //!Throws bad_alloc if there is no enough memory
180
180
  //!If Version is 2, this allocated memory can only be deallocated
181
181
  //!with deallocate() or (for Version == 2) deallocate_many()
182
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD pointer allocate(size_type count, const void * hint= 0)
182
+ BOOST_CONTAINER_NODISCARD pointer allocate(size_type count)
183
183
  {
184
- (void)hint;
185
184
  if(count > size_type(-1)/(2u*sizeof(T)))
186
185
  boost::container::throw_bad_alloc();
187
- void *ret = dlmalloc_malloc(count*sizeof(T));
186
+ void *ret = dlmalloc_memalign(count*sizeof(T), dtl::alignment_of<T>::value);
188
187
  if(!ret)
189
188
  boost::container::throw_bad_alloc();
190
189
  return static_cast<pointer>(ret);
@@ -197,7 +196,7 @@ class allocator
197
196
 
198
197
  //!Returns the maximum number of elements that could be allocated.
199
198
  //!Never throws
200
- inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
199
+ BOOST_CONTAINER_NODISCARD inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
201
200
  { return size_type(-1)/(2u*sizeof(T)); }
202
201
 
203
202
  //!Swaps two allocators, does nothing
@@ -207,13 +206,13 @@ class allocator
207
206
 
208
207
  //!An allocator always compares to true, as memory allocated with one
209
208
  //!instance can be deallocated by another instance
210
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
209
+ BOOST_CONTAINER_NODISCARD
211
210
  friend bool operator==(const allocator &, const allocator &) BOOST_NOEXCEPT_OR_NOTHROW
212
211
  { return true; }
213
212
 
214
213
  //!An allocator always compares to false, as memory allocated with one
215
214
  //!instance can be deallocated by another instance
216
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
215
+ BOOST_CONTAINER_NODISCARD inline
217
216
  friend bool operator!=(const allocator &, const allocator &) BOOST_NOEXCEPT_OR_NOTHROW
218
217
  { return false; }
219
218
 
@@ -221,7 +220,7 @@ class allocator
221
220
  //!capabilities. Memory allocated with this function can only be deallocated with deallocate()
222
221
  //!or deallocate_many().
223
222
  //!This function is available only with Version == 2
224
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD pointer allocation_command(allocation_type command,
223
+ BOOST_CONTAINER_NODISCARD pointer allocation_command(allocation_type command,
225
224
  size_type limit_size,
226
225
  size_type &prefer_in_recvd_out_size,
227
226
  pointer &reuse)
@@ -240,7 +239,7 @@ class allocator
240
239
  //!Memory must not have been allocated with
241
240
  //!allocate_one or allocate_individual.
242
241
  //!This function is available only with Version == 2
243
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD size_type size(pointer p) const BOOST_NOEXCEPT_OR_NOTHROW
242
+ BOOST_CONTAINER_NODISCARD size_type size(pointer p) const BOOST_NOEXCEPT_OR_NOTHROW
244
243
  {
245
244
  BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
246
245
  return dlmalloc_size(p);
@@ -250,7 +249,7 @@ class allocator
250
249
  //!must be deallocated only with deallocate_one().
251
250
  //!Throws bad_alloc if there is no enough memory
252
251
  //!This function is available only with Version == 2
253
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline pointer allocate_one()
252
+ BOOST_CONTAINER_NODISCARD inline pointer allocate_one()
254
253
  {
255
254
  BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
256
255
  return this->allocate(1);
@@ -359,7 +358,8 @@ class allocator
359
358
  std::size_t r_size;
360
359
  {
361
360
  void* reuse_ptr_void = reuse_ptr;
362
- ret = dlmalloc_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr_void);
361
+ ret = dlmalloc_allocation_command( command, sizeof(T), dtl::alignment_of<T>::value
362
+ , l_size, p_size, &r_size, reuse_ptr_void);
363
363
  reuse_ptr = ret.second ? static_cast<T*>(reuse_ptr_void) : 0;
364
364
  }
365
365
  prefer_in_recvd_out_size = r_size/sizeof(T);
@@ -47,6 +47,8 @@
47
47
  #include <boost/move/detail/fwd_macros.hpp>
48
48
  #endif
49
49
 
50
+ #include <boost/assert.hpp>
51
+
50
52
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
51
53
 
52
54
  #if defined(BOOST_CONTAINER_GCC_COMPATIBLE_HAS_DIAGNOSTIC_IGNORED)
@@ -84,13 +86,26 @@
84
86
 
85
87
  namespace boost {
86
88
  namespace container {
89
+
90
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
91
+
87
92
  namespace dtl {
88
93
 
94
+ template <class T>
95
+ class allocator_traits_dummy
96
+ {
97
+ public:
98
+ typedef T value_type;
99
+ T *allocate(std::size_t){ return 0; }
100
+ void deallocate(T *, std::size_t){}
101
+ };
102
+
89
103
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
90
104
 
91
105
  template<class T, class ...Args>
92
106
  BOOST_CONTAINER_FORCEINLINE void construct_type(T *p, BOOST_FWD_REF(Args) ...args)
93
107
  {
108
+ BOOST_CONTAINER_ASSUME(p != 0); //elide the new-expression's null check on placement new
94
109
  ::new(const_cast<void*>(static_cast<const volatile void*>(p)), boost_container_new_t()) T(::boost::forward<Args>(args)...);
95
110
  }
96
111
 
@@ -102,6 +117,7 @@ BOOST_CONTAINER_FORCEINLINE \
102
117
  typename dtl::disable_if_c<dtl::is_pair<T>::value, void >::type \
103
118
  construct_type(T *p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
104
119
  {\
120
+ BOOST_CONTAINER_ASSUME(p != 0);\
105
121
  ::new(const_cast<void*>(static_cast<const volatile void*>(p)), boost_container_new_t()) T( BOOST_MOVE_FWD##N );\
106
122
  }\
107
123
  //
@@ -185,8 +201,6 @@ construct_type(T* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y)
185
201
 
186
202
  } //namespace dtl
187
203
 
188
- #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
189
-
190
204
  template<class T, class VoidAllocator, class Options>
191
205
  class small_vector_allocator;
192
206
 
@@ -418,6 +432,7 @@ struct allocator_traits
418
432
 
419
433
  //! <b>Returns</b>: <code>a.allocate(n)</code>
420
434
  //!
435
+ BOOST_CONTAINER_NODISCARD
421
436
  inline static pointer allocate(Allocator &a, size_type n)
422
437
  { return a.allocate(n); }
423
438
 
@@ -429,6 +444,7 @@ struct allocator_traits
429
444
 
430
445
  //! <b>Effects</b>: calls <code>a.allocate(n, p)</code> if that call is well-formed;
431
446
  //! otherwise, invokes <code>a.allocate(n)</code>
447
+ BOOST_CONTAINER_NODISCARD
432
448
  inline static pointer allocate(Allocator &a, size_type n, const_void_pointer p)
433
449
  {
434
450
  const bool value = boost::container::dtl::
@@ -453,6 +469,7 @@ struct allocator_traits
453
469
 
454
470
  //! <b>Returns</b>: <code>a.max_size()</code> if that expression is well-formed; otherwise,
455
471
  //! <code>numeric_limits<size_type>::max()</code>.
472
+ BOOST_CONTAINER_NODISCARD
456
473
  inline static size_type max_size(const Allocator &a) BOOST_NOEXCEPT_OR_NOTHROW
457
474
  {
458
475
  const bool value = allocator_traits_detail::has_max_size<Allocator, size_type (Allocator::*)() const>::value;
@@ -474,6 +491,17 @@ struct allocator_traits
474
491
  return allocator_traits::priv_select_on_container_copy_construction(flag, a);
475
492
  }
476
493
 
494
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
495
+ //! <b>Effects</b>: calls <code>a.construct(p)</code> if that call is well-formed;
496
+ //! otherwise, invokes <code>`placement new` (static_cast<void*>(p)) T()</code>
497
+ //!
498
+ //! <b>Note</b>: Non-standard extension .
499
+ template <class T>
500
+ inline static void construct(Allocator & a, T* p, const value_init_t &)
501
+ { allocator_traits::construct(a, p); }
502
+
503
+ #endif
504
+
477
505
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
478
506
  //! <b>Effects</b>: calls <code>a.construct(p, std::forward<Args>(args)...)</code> if that call is well-formed;
479
507
  //! otherwise, invokes <code>`placement new` (static_cast<void*>(p)) T(std::forward<Args>(args)...)</code>
@@ -669,6 +697,10 @@ struct allocator_traits
669
697
  inline static void priv_construct(dtl::false_type, Allocator &, T *p, const ::boost::container::default_init_t&)
670
698
  { ::new((void*)p, boost_container_new_t()) T; }
671
699
 
700
+ template<class T>
701
+ inline static void priv_construct(dtl::false_type, Allocator &, T *p, const ::boost::container::value_init_t&)
702
+ { ::new((void*)p, boost_container_new_t()) T(); }
703
+
672
704
  inline static bool priv_storage_is_unpropagable(dtl::true_type, const Allocator &a, pointer p)
673
705
  { return a.storage_is_unpropagable(p); }
674
706
 
@@ -29,6 +29,8 @@
29
29
  //! - boost::container::small_vector_base
30
30
  //! - boost::container::small_vector
31
31
  //! - boost::container::devector
32
+ //! - boost::container::deque
33
+ //! - boost::container::segtor
32
34
  //! - boost::container::slist
33
35
  //! - boost::container::list
34
36
  //! - boost::container::set
@@ -132,6 +134,11 @@ template <class T
132
134
  ,class Options = void>
133
135
  class deque;
134
136
 
137
+ template <class T
138
+ ,class Allocator = void
139
+ ,class Options = void>
140
+ class segtor;
141
+
135
142
  template <class T
136
143
  ,class Allocator = void >
137
144
  class list;
@@ -140,6 +147,10 @@ template <class T
140
147
  ,class Allocator = void >
141
148
  class slist;
142
149
 
150
+ template <class T
151
+ ,class Allocator = void >
152
+ class hub;
153
+
143
154
  template <class Key
144
155
  ,class Compare = std::less<Key>
145
156
  ,class Allocator = void
@@ -272,8 +283,9 @@ struct small_flat_multimap_of
272
283
  };
273
284
 
274
285
  template <class CharT
275
- ,class Traits = std::char_traits<CharT>
276
- ,class Allocator = void >
286
+ ,class Traits = std::char_traits<CharT>
287
+ ,class Allocator = void
288
+ ,class Options = void >
277
289
  class basic_string;
278
290
 
279
291
  typedef basic_string <char> string;