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
@@ -455,7 +455,11 @@ namespace boost
455
455
  std::size_t seed = 0;
456
456
 
457
457
  hash_combine( seed, v.index() );
458
- std::visit( [&seed](auto&& x) { hash_combine(seed, x); }, v );
458
+
459
+ if( !v.valueless_by_exception() )
460
+ {
461
+ std::visit( [&seed](auto&& x) { hash_combine(seed, x); }, v );
462
+ }
459
463
 
460
464
  return seed;
461
465
  }
@@ -156,18 +156,15 @@ inline void no_throw_failed_impl(const char* expr, const char* what, const char*
156
156
  # pragma GCC diagnostic ignored "-Wsign-conversion"
157
157
  #endif
158
158
 
159
- // specialize test output for char pointers to avoid printing as cstring
160
- template <class T> inline const T& test_output_impl(const T& v) { return v; }
161
- inline const void* test_output_impl(const char* v) { return v; }
162
- inline const void* test_output_impl(const unsigned char* v) { return v; }
163
- inline const void* test_output_impl(const signed char* v) { return v; }
164
- inline const void* test_output_impl(char* v) { return v; }
165
- inline const void* test_output_impl(unsigned char* v) { return v; }
166
- inline const void* test_output_impl(signed char* v) { return v; }
167
- template<class T> inline const void* test_output_impl(T volatile* v) { return const_cast<T*>(v); }
159
+ // specialize test output for pointers to avoid printing as cstring
160
+
161
+ template<class T> inline T const& test_output_impl( T const& v ) { return v; }
162
+
163
+ template<class T> inline void const* test_output_impl( T* const& v ) { return v; }
164
+ template<class T> inline void const* test_output_impl( T volatile* const& v ) { return const_cast<T*>(v); }
168
165
 
169
166
  #if !defined( BOOST_NO_CXX11_NULLPTR )
170
- inline const void* test_output_impl(std::nullptr_t) { return nullptr; }
167
+ inline const void* test_output_impl( std::nullptr_t ) { return nullptr; }
171
168
  #endif
172
169
 
173
170
  // print chars as numeric
@@ -210,6 +207,16 @@ inline std::string test_output_impl( char const& v )
210
207
  }
211
208
  }
212
209
 
210
+ #if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L
211
+
212
+ inline std::string test_output_impl( char8_t const& v )
213
+ {
214
+ // assume that char is ASCII, compatible with char8_t
215
+ return test_output_impl( static_cast<char>( v ) );
216
+ }
217
+
218
+ #endif
219
+
213
220
  // predicates
214
221
 
215
222
  struct lw_test_eq
@@ -299,9 +299,7 @@ namespace date_time {
299
299
  inline BOOST_CXX14_CONSTEXPR
300
300
  bool period<point_rep,duration_rep>::intersects(const period<point_rep,duration_rep>& other) const
301
301
  {
302
- return ( contains(other.begin_) ||
303
- other.contains(begin_) ||
304
- ((other.begin_ < begin_) && (other.last_ >= begin_)));
302
+ return !is_null() && !other.is_null() && (begin_ < other.end()) && (other.begin_ < end());
305
303
  }
306
304
 
307
305
  //! Returns the period of intersection or invalid range no intersection
@@ -45,4 +45,20 @@
45
45
 
46
46
  #define BOOST_DESCRIBE_INLINE_CONSTEXPR BOOST_DESCRIBE_INLINE_VARIABLE BOOST_DESCRIBE_CONSTEXPR_OR_CONST
47
47
 
48
+ #if __cplusplus >= 202002L || ( defined(_MSVC_LANG) && _MSVC_LANG >= 202002L )
49
+
50
+ # define BOOST_DESCRIBE_CXX20
51
+
52
+ // Clang 13.0 is needed for unevaluated lambdas
53
+ # if defined(__clang__) && __clang_major__ < 13
54
+ # undef BOOST_DESCRIBE_CXX20
55
+ # endif
56
+
57
+ // Apple Clang 13.1 is Clang 13.0
58
+ # if defined(__clang__) && defined(__apple_build_version__) && __clang_major__ == 13 && __clang_minor__ < 1
59
+ # undef BOOST_DESCRIBE_CXX20
60
+ # endif
61
+
62
+ #endif
63
+
48
64
  #endif // #ifndef BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED
@@ -0,0 +1,114 @@
1
+ //Copyright (c) 2006-2026 Emil Dotchevski and Reverge Studios, Inc.
2
+
3
+ //Distributed under the Boost Software License, Version 1.0. (See accompanying
4
+ //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ #ifndef BOOST_EXCEPTION_DETAIL_ENCODER_HPP_INCLUDED
7
+ #define BOOST_EXCEPTION_DETAIL_ENCODER_HPP_INCLUDED
8
+
9
+ #include <boost/exception/detail/type_info.hpp>
10
+ #include <type_traits>
11
+ #include <utility>
12
+
13
+ namespace
14
+ boost
15
+ {
16
+ template <class Tag, class T> class error_info;
17
+
18
+ namespace
19
+ exception_serialization
20
+ {
21
+ struct encoder_adl {};
22
+ }
23
+
24
+ namespace
25
+ exception_detail
26
+ {
27
+ template <class T>
28
+ struct first_arg;
29
+
30
+ template <class C, class R, class A1, class... A>
31
+ struct
32
+ first_arg<R(C::*)(A1, A...)>
33
+ {
34
+ using type = A1;
35
+ };
36
+
37
+ template <class C, class R, class A1, class... A>
38
+ struct
39
+ first_arg<R(C::*)(A1, A...) const>
40
+ {
41
+ using type = A1;
42
+ };
43
+
44
+ class
45
+ encoder:
46
+ exception_serialization::encoder_adl
47
+ {
48
+ encoder(encoder const &) = delete;
49
+ encoder & operator=(encoder const &) = delete;
50
+
51
+ core::typeinfo const * type_;
52
+ void * e_;
53
+
54
+ bool
55
+ dispatch_()
56
+ {
57
+ return false;
58
+ }
59
+
60
+ template <class F1, class... Fn>
61
+ bool
62
+ dispatch_(F1 && f1, Fn && ... fn)
63
+ {
64
+ using encoder_type = typename std::decay<typename first_arg<decltype(&std::decay<F1>::type::operator())>::type>::type;
65
+ if (encoder_type * e = get<encoder_type>())
66
+ {
67
+ std::forward<F1>(f1)(*e);
68
+ return true;
69
+ }
70
+ return dispatch_(std::forward<Fn>(fn)...);
71
+ }
72
+
73
+ protected:
74
+
75
+ template <class Encoder>
76
+ explicit
77
+ encoder(Encoder * e) noexcept:
78
+ type_(&BOOST_CORE_TYPEID(Encoder)),
79
+ e_(e)
80
+ {
81
+ }
82
+
83
+ public:
84
+
85
+ template <class Encoder>
86
+ Encoder *
87
+ get() noexcept
88
+ {
89
+ return *type_ == BOOST_CORE_TYPEID(Encoder) ? static_cast<Encoder *>(e_) : nullptr;
90
+ }
91
+
92
+ template <class... Fn>
93
+ bool
94
+ dispatch(Fn && ... fn)
95
+ {
96
+ return dispatch_(std::forward<Fn>(fn)...);
97
+ }
98
+ };
99
+
100
+ template <class Encoder>
101
+ struct
102
+ encoder_adaptor:
103
+ encoder
104
+ {
105
+ explicit
106
+ encoder_adaptor(Encoder & e) noexcept:
107
+ encoder(&e)
108
+ {
109
+ }
110
+ };
111
+ }
112
+ }
113
+
114
+ #endif
@@ -13,6 +13,8 @@
13
13
  #include <utility>
14
14
  #include <string>
15
15
 
16
+ namespace boost { namespace exception_detail { class encoder; } }
17
+
16
18
  #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS
17
19
  #if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301
18
20
  #pragma GCC system_header
@@ -38,6 +40,7 @@ boost
38
40
 
39
41
  virtual std::string name_value_string() const = 0;
40
42
  virtual error_info_base * clone() const = 0;
43
+ virtual void serialize_to(encoder &) const = 0;
41
44
 
42
45
  virtual
43
46
  ~error_info_base() BOOST_NOEXCEPT_OR_NOTHROW
@@ -97,6 +100,7 @@ boost
97
100
  error_info & operator=( error_info && x );
98
101
  #endif
99
102
  std::string name_value_string() const;
103
+ void serialize_to(exception_detail::encoder &) const;
100
104
  value_type v_;
101
105
  };
102
106
  }
@@ -21,4 +21,4 @@ BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.Exception 1.85 and w
21
21
 
22
22
  #endif
23
23
 
24
- #endif
24
+ #endif
@@ -11,7 +11,17 @@
11
11
  #include <boost/core/demangle.hpp>
12
12
  #include <boost/current_function.hpp>
13
13
  #include <string>
14
- #include <string.h>
14
+ #include <ostream>
15
+ #include <cstring>
16
+ #include <cstddef>
17
+
18
+ #ifndef BOOST_EXCEPTION_PRETTY_FUNCTION
19
+ # if defined(_MSC_VER) && !defined(__clang__) && !defined(__GNUC__)
20
+ # define BOOST_EXCEPTION_PRETTY_FUNCTION __FUNCSIG__
21
+ # else
22
+ # define BOOST_EXCEPTION_PRETTY_FUNCTION __PRETTY_FUNCTION__
23
+ # endif
24
+ #endif
15
25
 
16
26
  #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS
17
27
  #if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301
@@ -73,6 +83,206 @@ boost
73
83
  return a.type_!=b.type_ && strcmp(a.type_->name(), b.type_->name()) < 0;
74
84
  }
75
85
  };
86
+
87
+ template <int S1, int S2, int I, bool = (S1 >= S2)>
88
+ struct
89
+ cpp11_prefix
90
+ {
91
+ BOOST_FORCEINLINE static constexpr
92
+ bool
93
+ check(char const (&)[S1], char const (&)[S2]) noexcept
94
+ {
95
+ return false;
96
+ }
97
+ };
98
+
99
+ template <int S1, int S2, int I>
100
+ struct
101
+ cpp11_prefix<S1, S2, I, true>
102
+ {
103
+ BOOST_FORCEINLINE static constexpr
104
+ bool
105
+ check(char const (&str)[S1], char const (&prefix)[S2]) noexcept
106
+ {
107
+ return str[I] == prefix[I] && cpp11_prefix<S1, S2, I - 1>::check(str, prefix);
108
+ }
109
+ };
110
+
111
+ template <int S1, int S2>
112
+ struct
113
+ cpp11_prefix<S1, S2, 0, true>
114
+ {
115
+ BOOST_FORCEINLINE static constexpr
116
+ bool
117
+ check(char const (&str)[S1], char const (&prefix)[S2]) noexcept
118
+ {
119
+ return str[0] == prefix[0];
120
+ }
121
+ };
122
+
123
+ template <int S1, int S2>
124
+ BOOST_FORCEINLINE constexpr
125
+ int
126
+ check_prefix(char const (&str)[S1], char const (&prefix)[S2]) noexcept
127
+ {
128
+ return cpp11_prefix<S1, S2, S2 - 2>::check(str, prefix) ? S2 - 1 : 0;
129
+ }
130
+
131
+ template <int S1, int S2, int I1, int I2, bool = (S1 >= S2)>
132
+ struct
133
+ cpp11_suffix
134
+ {
135
+ BOOST_FORCEINLINE static constexpr
136
+ bool
137
+ check(char const (&)[S1], char const (&)[S2]) noexcept
138
+ {
139
+ return false;
140
+ }
141
+ };
142
+
143
+ template <int S1, int S2, int I1, int I2>
144
+ struct
145
+ cpp11_suffix<S1, S2, I1, I2, true>
146
+ {
147
+ BOOST_FORCEINLINE static constexpr
148
+ bool
149
+ check(char const (&str)[S1], char const (&suffix)[S2]) noexcept
150
+ {
151
+ return str[I1] == suffix[I2] && cpp11_suffix<S1, S2, I1 - 1, I2 - 1>::check(str, suffix);
152
+ }
153
+ };
154
+
155
+ template <int S1, int S2, int I1>
156
+ struct
157
+ cpp11_suffix<S1, S2, I1, 0, true>
158
+ {
159
+ BOOST_FORCEINLINE static constexpr
160
+ bool
161
+ check(char const (&str)[S1], char const (&suffix)[S2]) noexcept
162
+ {
163
+ return str[I1] == suffix[0];
164
+ }
165
+ };
166
+
167
+ template <int S1, int S2>
168
+ BOOST_FORCEINLINE constexpr
169
+ int
170
+ check_suffix(char const (&str)[S1], char const (&suffix)[S2]) noexcept
171
+ {
172
+ return cpp11_suffix<S1, S2, S1 - 2, S2 - 2>::check(str, suffix) ? S1 - S2 : 0;
173
+ }
174
+
175
+ }
176
+
177
+ namespace
178
+ n
179
+ {
180
+ struct
181
+ r
182
+ {
183
+ char const * name_not_zero_terminated_at_length;
184
+ std::size_t length;
185
+ };
186
+
187
+ #ifdef _MSC_VER
188
+ # define BOOST_EXCEPTION_CDECL __cdecl
189
+ #else
190
+ # define BOOST_EXCEPTION_CDECL
191
+ #endif
192
+
193
+ template <class T>
194
+ BOOST_FORCEINLINE
195
+ r
196
+ BOOST_EXCEPTION_CDECL
197
+ p()
198
+ {
199
+ #define BOOST_EXCEPTION_P(P) (sizeof(char[1 + exception_detail::check_prefix(BOOST_EXCEPTION_PRETTY_FUNCTION, P)]) - 1)
200
+ // clang style:
201
+ std::size_t const p01 = BOOST_EXCEPTION_P("r boost::n::p() [T = ");
202
+ std::size_t const p02 = BOOST_EXCEPTION_P("r __cdecl boost::n::p(void) [T = ");
203
+ // old clang style:
204
+ std::size_t const p03 = BOOST_EXCEPTION_P("boost::n::r boost::n::p() [T = ");
205
+ std::size_t const p04 = BOOST_EXCEPTION_P("boost::n::r __cdecl boost::n::p(void) [T = ");
206
+ // gcc style:
207
+ std::size_t const p05 = BOOST_EXCEPTION_P("boost::n::r boost::n::p() [with T = ");
208
+ std::size_t const p06 = BOOST_EXCEPTION_P("boost::n::r __cdecl boost::n::p() [with T = ");
209
+ // msvc style, struct:
210
+ std::size_t const p07 = BOOST_EXCEPTION_P("struct boost::n::r __cdecl boost::n::p<struct ");
211
+ // msvc style, class:
212
+ std::size_t const p08 = BOOST_EXCEPTION_P("struct boost::n::r __cdecl boost::n::p<class ");
213
+ // msvc style, enum:
214
+ std::size_t const p09 = BOOST_EXCEPTION_P("struct boost::n::r __cdecl boost::n::p<enum ");
215
+ // msvc style, built-in type:
216
+ std::size_t const p10 = BOOST_EXCEPTION_P("struct boost::n::r __cdecl boost::n::p<");
217
+ #undef BOOST_EXCEPTION_P
218
+
219
+ #define BOOST_EXCEPTION_S(S) (sizeof(char[1 + exception_detail::check_suffix(BOOST_EXCEPTION_PRETTY_FUNCTION, S)]) - 1)
220
+ // clang/gcc style:
221
+ std::size_t const s01 = BOOST_EXCEPTION_S("]");
222
+ // msvc style:
223
+ std::size_t const s02 = BOOST_EXCEPTION_S(">(void)");
224
+ #undef BOOST_EXCEPTION_S
225
+
226
+ char static_assert_unrecognized_pretty_function_format_please_file_github_issue[sizeof(
227
+ char[
228
+ (s01 && (1 == (!!p01 + !!p02 + !!p03 + !!p04 + !!p05 + !!p06)))
229
+ ||
230
+ (s02 && (1 == (!!p07 + !!p08 + !!p09)))
231
+ ||
232
+ (s02 && !!p10)
233
+ ]
234
+ ) * 2 - 1];
235
+ (void) static_assert_unrecognized_pretty_function_format_please_file_github_issue;
236
+
237
+ if( std::size_t const p = sizeof(char[1 + !!s01 * (p01 + p02 + p03 + p04 + p05 + p06)]) - 1 )
238
+ return { &BOOST_EXCEPTION_PRETTY_FUNCTION[p], s01 - p };
239
+
240
+ if( std::size_t const p = sizeof(char[1 + !!s02 * (p07 + p08 + p09)]) - 1 )
241
+ return { &BOOST_EXCEPTION_PRETTY_FUNCTION[p], s02 - p };
242
+
243
+ std::size_t const p = sizeof(char[1 + !!s02 * p10]) - 1;
244
+ return { &BOOST_EXCEPTION_PRETTY_FUNCTION[p], s02 - p };
245
+ }
246
+
247
+ #undef BOOST_EXCEPTION_CDECL
248
+ }
249
+
250
+ namespace
251
+ exception_detail
252
+ {
253
+ struct
254
+ pretty_type_name
255
+ {
256
+ char const * name_not_zero_terminated_at_length;
257
+ std::size_t length;
258
+
259
+ template <class CharT, class Traits>
260
+ friend
261
+ std::basic_ostream<CharT, Traits> &
262
+ operator<<(std::basic_ostream<CharT, Traits> & os, pretty_type_name const & x)
263
+ {
264
+ return os.write(x.name_not_zero_terminated_at_length, x.length);
265
+ }
266
+
267
+ template <std::size_t S>
268
+ friend
269
+ char *
270
+ to_zstr(char (&zstr)[S], pretty_type_name const & x) noexcept
271
+ {
272
+ std::size_t n = x.length < S - 1 ? x.length : S - 1;
273
+ std::memcpy(zstr, x.name_not_zero_terminated_at_length, n);
274
+ zstr[n] = 0;
275
+ return zstr;
276
+ }
277
+ };
278
+
279
+ template <class T>
280
+ pretty_type_name
281
+ get_pretty_tag_type_name()
282
+ {
283
+ n::r parsed = n::p<T>();
284
+ return { parsed.name_not_zero_terminated_at_length, parsed.length };
285
+ }
76
286
  }
77
287
  }
78
288
 
@@ -205,6 +205,65 @@ boost
205
205
  #endif
206
206
  return w;
207
207
  }
208
+
209
+ namespace
210
+ exception_detail
211
+ {
212
+ template <class Encoder>
213
+ void
214
+ serialize_diagnostic_information_to_impl_( boost::exception const * be, std::exception const * se, Encoder & e )
215
+ {
216
+ if( !be && !se )
217
+ return;
218
+ #ifndef BOOST_NO_RTTI
219
+ if( !be )
220
+ be=dynamic_cast<boost::exception const *>(se);
221
+ if( !se )
222
+ se=dynamic_cast<std::exception const *>(be);
223
+ #endif
224
+ if( be )
225
+ {
226
+ if( char const * const * f=get_error_info<throw_file>(*be) )
227
+ output_at(e, *f, "throw_file");
228
+ if( int const * l=get_error_info<throw_line>(*be) )
229
+ output_at(e, *l, "throw_line");
230
+ if( char const * const * fn=get_error_info<throw_function>(*be) )
231
+ output_at(e, *fn, "throw_function");
232
+ }
233
+ #ifndef BOOST_NO_RTTI
234
+ if( be || se )
235
+ output_at(e, core::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()).c_str(), "dynamic_exception_type");
236
+ #endif
237
+ if( se )
238
+ if( char const * wh = se->what() )
239
+ output_at(e, wh, "std::exception::what");
240
+ if( be )
241
+ if( error_info_container * c = be->data_.get() )
242
+ {
243
+ encoder_adaptor<Encoder> ea(e);
244
+ c->serialize_to(ea);
245
+ }
246
+ }
247
+ }
248
+
249
+ template <class T, class Encoder>
250
+ void
251
+ serialize_diagnostic_information_to( T const & e, Encoder & enc )
252
+ {
253
+ exception_detail::serialize_diagnostic_information_to_impl_(exception_detail::get_boost_exception(&e),exception_detail::get_std_exception(&e),enc);
254
+ }
255
+
256
+ #ifndef BOOST_NO_EXCEPTIONS
257
+ template <class Encoder>
258
+ void
259
+ serialize_current_exception_diagnostic_information_to( Encoder & e )
260
+ {
261
+ boost::exception const * be=current_exception_cast<boost::exception const>();
262
+ std::exception const * se=current_exception_cast<std::exception const>();
263
+ if( be || se )
264
+ exception_detail::serialize_diagnostic_information_to_impl_(be,se,e);
265
+ }
266
+ #endif
208
267
  }
209
268
 
210
269
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -175,6 +175,7 @@ boost
175
175
  {
176
176
  class error_info_base;
177
177
  struct type_info_;
178
+ class encoder;
178
179
 
179
180
  struct
180
181
  error_info_container
@@ -185,6 +186,7 @@ boost
185
186
  virtual void add_ref() const = 0;
186
187
  virtual bool release() const = 0;
187
188
  virtual refcount_ptr<exception_detail::error_info_container> clone() const = 0;
189
+ virtual void serialize_to( encoder & ) const { }
188
190
 
189
191
  protected:
190
192
 
@@ -227,6 +229,9 @@ boost
227
229
 
228
230
  void copy_boost_exception( exception *, exception const * );
229
231
 
232
+ template <class Encoder>
233
+ void serialize_diagnostic_information_to_impl_( exception const *, std::exception const *, Encoder & );
234
+
230
235
  template <class E,class Tag,class T>
231
236
  E const & set_info( E const &, error_info<Tag,T> const & );
232
237
 
@@ -321,6 +326,7 @@ boost
321
326
  friend struct exception_detail::set_info_rv<throw_line>;
322
327
  friend struct exception_detail::set_info_rv<throw_column>;
323
328
  friend void exception_detail::copy_boost_exception( exception *, exception const * );
329
+ template <class Encoder> friend void exception_detail::serialize_diagnostic_information_to_impl_( exception const *, std::exception const *, Encoder & );
324
330
  #endif
325
331
  mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
326
332
  mutable char const * throw_function_;
@@ -11,7 +11,9 @@
11
11
  #include <boost/exception/to_string_stub.hpp>
12
12
  #include <boost/exception/detail/error_info_impl.hpp>
13
13
  #include <boost/exception/detail/shared_ptr.hpp>
14
+ #include <boost/exception/detail/encoder.hpp>
14
15
  #include <map>
16
+ #include <type_traits>
15
17
 
16
18
  #ifndef BOOST_EXCEPTION_ENABLE_WARNINGS
17
19
  #if defined(__GNUC__) && __GNUC__*100+__GNUC_MINOR__>301
@@ -28,6 +30,17 @@
28
30
  namespace
29
31
  boost
30
32
  {
33
+ namespace
34
+ exception_serialization
35
+ {
36
+ // Stub
37
+ template <class Encoder, class T, class... Deprioritize>
38
+ typename std::enable_if<std::is_base_of<exception_detail::encoder, Encoder>::value>::type
39
+ serialize(Encoder &, T const &, char const *, Deprioritize...)
40
+ {
41
+ }
42
+ }
43
+
31
44
  template <class Tag,class T>
32
45
  inline
33
46
  std::string
@@ -53,6 +66,17 @@ boost
53
66
  return to_string_stub(*this);
54
67
  }
55
68
 
69
+ template <class Tag,class T>
70
+ inline
71
+ void
72
+ error_info<Tag,T>::
73
+ serialize_to(exception_detail::encoder & e) const
74
+ {
75
+ char buf[256];
76
+ using namespace exception_serialization;
77
+ serialize(e, value(), to_zstr(buf, exception_detail::get_pretty_tag_type_name<Tag>()));
78
+ }
79
+
56
80
  namespace
57
81
  exception_detail
58
82
  {
@@ -108,6 +132,16 @@ boost
108
132
  return diagnostic_info_str_.c_str();
109
133
  }
110
134
 
135
+ void
136
+ serialize_to( encoder & e ) const
137
+ {
138
+ for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
139
+ {
140
+ error_info_base const & x = *i->second;
141
+ x.serialize_to(e);
142
+ }
143
+ }
144
+
111
145
  private:
112
146
 
113
147
  friend class boost::exception;
@@ -22,7 +22,6 @@
22
22
  #include <boost/intrusive/detail/avltree_node.hpp>
23
23
  #include <boost/intrusive/bstree.hpp>
24
24
  #include <boost/intrusive/detail/tree_node.hpp>
25
- #include <boost/intrusive/detail/ebo_functor_holder.hpp>
26
25
  #include <boost/intrusive/detail/mpl.hpp>
27
26
  #include <boost/intrusive/pointer_traits.hpp>
28
27
  #include <boost/intrusive/detail/get_value_traits.hpp>
@@ -585,8 +585,11 @@ struct bstbase
585
585
  //Detach all inserted nodes. This will add exception safety to bstree_impl
586
586
  //constructors inserting elements.
587
587
  ~bstbase()
588
+ #if defined(BOOST_INTRUSIVE_CONCEPTS_BASED_OVERLOADING)
589
+ requires (ValueTraits::link_mode != normal_link)
590
+ #endif
588
591
  {
589
- if(is_safe_autounlink<value_traits::link_mode>::value){
592
+ BOOST_IF_CONSTEXPR(is_safe_autounlink<value_traits::link_mode>::value){
590
593
  node_algorithms::clear_and_dispose
591
594
  ( this->header_ptr()
592
595
  , detail::node_disposer<detail::null_disposer, value_traits, AlgoType>
@@ -594,6 +597,11 @@ struct bstbase
594
597
  node_algorithms::init(this->header_ptr());
595
598
  }
596
599
  }
600
+
601
+ #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && defined(BOOST_INTRUSIVE_CONCEPTS_BASED_OVERLOADING)
602
+ //Default destructor for normal links (allows conditional triviality)
603
+ ~bstbase() requires (ValueTraits::link_mode == normal_link) = default;
604
+ #endif
597
605
  };
598
606
 
599
607
 
@@ -947,7 +955,7 @@ class bstree_impl
947
955
  //! <b>Throws</b>: Nothing.
948
956
  bool empty() const BOOST_NOEXCEPT
949
957
  {
950
- if(ConstantTimeSize){
958
+ BOOST_IF_CONSTEXPR(constant_time_size){
951
959
  return !this->data_type::sz_traits().get_size();
952
960
  }
953
961
  else{
@@ -2073,7 +2081,8 @@ class bstree_impl
2073
2081
 
2074
2082
  friend bool operator==(const bstree_impl &x, const bstree_impl &y)
2075
2083
  {
2076
- if(constant_time_size && x.size() != y.size()){
2084
+ BOOST_IF_CONSTEXPR(constant_time_size)
2085
+ if(x.size() != y.size()){
2077
2086
  return false;
2078
2087
  }
2079
2088
  return boost::intrusive::algo_equal(x.cbegin(), x.cend(), y.cbegin(), y.cend());
@@ -56,7 +56,7 @@ struct derivation_value_traits
56
56
  { return node_ptr(&value); }
57
57
 
58
58
  BOOST_INTRUSIVE_FORCEINLINE static const_node_ptr to_node_ptr(const_reference value) BOOST_NOEXCEPT
59
- { return node_ptr(&value); }
59
+ { return const_node_ptr(&value); }
60
60
 
61
61
  BOOST_INTRUSIVE_FORCEINLINE static pointer to_value_ptr(node_ptr n) BOOST_NOEXCEPT
62
62
  {