passenger 6.1.0 → 6.1.1

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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -19,12 +19,8 @@
19
19
  #ifndef BOOST_REGEX_CONFIG_HPP
20
20
  #define BOOST_REGEX_CONFIG_HPP
21
21
 
22
- #if !((__cplusplus >= 201103L) || (defined(_MSC_VER) && (_MSC_VER >= 1600)) || defined(BOOST_REGEX_CXX03))
23
- # define BOOST_REGEX_CXX03
24
- #endif
25
-
26
- #if defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_CXX03)
27
- # define BOOST_REGEX_CXX03
22
+ #if defined(BOOST_REGEX_RECURSIVE)
23
+ #error "All support for the C++03 recursive engine has been removed, this define has no effect anymore."
28
24
  #endif
29
25
 
30
26
  #if defined(__has_include)
@@ -33,6 +29,14 @@
33
29
  #endif
34
30
  #endif
35
31
 
32
+ #ifndef BOOST_REGEX_MODULE_EXPORT
33
+ #define BOOST_REGEX_MODULE_EXPORT
34
+ #define BOOST_REGEX_STATIC_CONST static const
35
+ #else
36
+ #define BOOST_REGEX_STATIC_CONST inline constexpr
37
+ #define BOOST_REGEX_STANDALONE
38
+ #endif
39
+
36
40
  /*
37
41
  * Borland C++ Fix/error check
38
42
  * this has to go *before* we include any std lib headers:
@@ -40,6 +44,7 @@
40
44
  #if defined(__BORLANDC__) && !defined(__clang__)
41
45
  # include <boost/regex/config/borland.hpp>
42
46
  #endif
47
+
43
48
  #ifndef BOOST_REGEX_STANDALONE
44
49
  #include <boost/version.hpp>
45
50
  #endif
@@ -51,9 +56,13 @@
51
56
  *************************************************************************/
52
57
 
53
58
  #ifdef BOOST_REGEX_STANDALONE
59
+ #ifndef BOOST_REGEX_AS_MODULE
54
60
  #include <cassert>
55
61
  # define BOOST_REGEX_ASSERT(x) assert(x)
56
62
  #else
63
+ # define BOOST_REGEX_ASSERT(x) do{ if(x == 0) { std::printf("%s:%d Assertion Failed", __FILE__, __LINE__); std::abort(); } }while(0)
64
+ #endif
65
+ #else
57
66
  #include <boost/assert.hpp>
58
67
  # define BOOST_REGEX_ASSERT(x) BOOST_ASSERT(x)
59
68
  #endif
@@ -90,20 +99,7 @@
90
99
  # endif
91
100
  #endif
92
101
 
93
-
94
- /****************************************************************************
95
- *
96
- * Legacy support:
97
- *
98
- *******************************************************************************/
99
-
100
- #if defined(BOOST_NO_STD_LOCALE) || defined(BOOST_NO_CXX11_HDR_MUTEX) || defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) \
101
- || defined(BOOST_NO_CXX11_HDR_ATOMIC) || defined(BOOST_NO_CXX11_ALLOCATOR) || defined(BOOST_NO_CXX11_SMART_PTR) \
102
- || defined(BOOST_NO_CXX11_STATIC_ASSERT) || defined(BOOST_NO_NOEXCEPT)
103
- #ifndef BOOST_REGEX_CXX03
104
- # define BOOST_REGEX_CXX03
105
- #endif
106
- #endif
102
+ #define BOOST_REGEX_MAX_RECURSION_DEPTH 100
107
103
 
108
104
  /*****************************************************************************
109
105
  *
@@ -112,7 +108,7 @@
112
108
  ****************************************************************************/
113
109
 
114
110
  /* Obsolete macro, use BOOST_VERSION instead: */
115
- #define BOOST_RE_VERSION 500
111
+ #define BOOST_RE_VERSION 600
116
112
 
117
113
  /* fix: */
118
114
  #if defined(_UNICODE) && !defined(UNICODE)
@@ -157,40 +153,6 @@
157
153
  */
158
154
  #define BOOST_REGEX_DETAIL_NS BOOST_REGEX_JOIN(re_detail_, BOOST_RE_VERSION)
159
155
 
160
- /*
161
- * Fix for gcc prior to 3.4: std::ctype<wchar_t> doesn't allow
162
- * masks to be combined, for example:
163
- * std::use_facet<std::ctype<wchar_t> >.is(std::ctype_base::lower|std::ctype_base::upper, L'a');
164
- * returns *false*.
165
- */
166
- #if defined(__GLIBCPP__) && defined(BOOST_REGEX_CXX03)
167
- # define BOOST_REGEX_BUGGY_CTYPE_FACET
168
- #endif
169
-
170
- /*
171
- * If there isn't good enough wide character support then there will
172
- * be no wide character regular expressions:
173
- */
174
- #if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING))
175
- # if !defined(BOOST_NO_WREGEX)
176
- # define BOOST_NO_WREGEX
177
- # endif
178
- #else
179
- # if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
180
- /* STLPort on IRIX is misconfigured: <cwctype> does not compile
181
- * as a temporary fix include <wctype.h> instead and prevent inclusion
182
- * of STLPort version of <cwctype> */
183
- # include <wctype.h>
184
- # define __STLPORT_CWCTYPE
185
- # define _STLP_CWCTYPE
186
- # endif
187
-
188
- #if defined(__cplusplus) && defined(BOOST_REGEX_CXX03)
189
- # include <boost/regex/config/cwchar.hpp>
190
- #endif
191
-
192
- #endif
193
-
194
156
  /*
195
157
  * If Win32 support has been disabled for boost in general, then
196
158
  * it is for regex in particular:
@@ -251,19 +213,6 @@
251
213
  # define BOOST_REGEX_DECL
252
214
  #endif
253
215
 
254
- #ifdef BOOST_REGEX_CXX03
255
- #if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)
256
- # define BOOST_LIB_NAME boost_regex
257
- # if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
258
- # define BOOST_DYN_LINK
259
- # endif
260
- # ifdef BOOST_REGEX_DIAG
261
- # define BOOST_LIB_DIAGNOSTIC
262
- # endif
263
- # include <boost/config/auto_link.hpp>
264
- #endif
265
- #endif
266
-
267
216
  /*****************************************************************************
268
217
  *
269
218
  * Set up function call type:
@@ -355,18 +304,7 @@
355
304
  * If there are no exceptions then we must report critical-errors
356
305
  * the only way we know how; by terminating.
357
306
  */
358
- #include <stdexcept>
359
- #include <string>
360
- #include <boost/throw_exception.hpp>
361
-
362
- # define BOOST_REGEX_NOEH_ASSERT(x)\
363
- if(0 == (x))\
364
- {\
365
- std::string s("Error: critical regex++ failure in: ");\
366
- s.append(#x);\
367
- std::runtime_error e(s);\
368
- boost::throw_exception(e);\
369
- }
307
+ # define BOOST_REGEX_NOEH_ASSERT(x) assert(x);
370
308
  #else
371
309
  /*
372
310
  * With exceptions then error handling is taken care of and
@@ -405,26 +343,6 @@ BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
405
343
 
406
344
  #endif
407
345
 
408
-
409
- /*****************************************************************************
410
- *
411
- * Algorithm selection and configuration.
412
- * These options are now obsolete for C++11 and later (regex v5).
413
- *
414
- ****************************************************************************/
415
-
416
- #if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)
417
- # if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(_MSC_VER) && (_MSC_VER >= 1400)) && defined(BOOST_REGEX_CXX03)
418
- # define BOOST_REGEX_RECURSIVE
419
- # else
420
- # define BOOST_REGEX_NON_RECURSIVE
421
- # endif
422
- #endif
423
-
424
- #ifdef BOOST_REGEX_NON_RECURSIVE
425
- # ifdef BOOST_REGEX_RECURSIVE
426
- # error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"
427
- # endif
428
346
  # ifndef BOOST_REGEX_BLOCKSIZE
429
347
  # define BOOST_REGEX_BLOCKSIZE 4096
430
348
  # endif
@@ -440,7 +358,6 @@ BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
440
358
  # ifndef BOOST_REGEX_MAX_CACHE_BLOCKS
441
359
  # define BOOST_REGEX_MAX_CACHE_BLOCKS 16
442
360
  # endif
443
- #endif
444
361
 
445
362
 
446
363
  /*****************************************************************************
@@ -23,10 +23,6 @@
23
23
  #include <boost/regex/config.hpp>
24
24
  #endif
25
25
 
26
- #ifdef BOOST_REGEX_CXX03
27
- #include <boost/regex/v4/pattern_except.hpp>
28
- #else
29
26
  #include <boost/regex/v5/pattern_except.hpp>
30
- #endif
31
27
 
32
28
  #endif
@@ -20,10 +20,6 @@
20
20
  #define BOOST_REGEX_OBJECT_CACHE_HPP
21
21
 
22
22
  #include <boost/regex/config.hpp>
23
- #ifdef BOOST_REGEX_CXX03
24
- #include <boost/regex/v4/object_cache.hpp>
25
- #else
26
23
  #include <boost/regex/v5/object_cache.hpp>
27
- #endif
28
24
 
29
25
  #endif
@@ -20,13 +20,7 @@
20
20
  #define BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP
21
21
 
22
22
  #include <boost/regex/config.hpp>
23
-
24
- #if defined(BOOST_REGEX_CXX03)
25
- #include <boost/regex/v4/unicode_iterator.hpp>
26
- #else
27
23
  #include <boost/regex/v5/unicode_iterator.hpp>
28
- #endif
29
-
30
24
 
31
25
  #endif // BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP
32
26
 
@@ -24,11 +24,7 @@
24
24
  #endif
25
25
 
26
26
  # ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
27
- #ifdef BOOST_REGEX_CXX03
28
- # include <boost/regex/v4/regex_traits.hpp>
29
- #else
30
27
  # include <boost/regex/v5/regex_traits.hpp>
31
- #endif
32
28
  # endif
33
29
 
34
30
  #endif // include
@@ -59,16 +59,6 @@
59
59
  // exception handling.
60
60
  // #define BOOST_REGEX_HAS_MS_STACK_GUARD
61
61
 
62
- // define this if you want to use the recursive algorithm
63
- // even if BOOST_REGEX_HAS_MS_STACK_GUARD is not defined.
64
- // NOTE: OBSOLETE!!
65
- // #define BOOST_REGEX_RECURSIVE
66
-
67
- // define this if you want to use the non-recursive
68
- // algorithm, even if the recursive version would be the default.
69
- // NOTE: OBSOLETE!!
70
- // #define BOOST_REGEX_NON_RECURSIVE
71
-
72
62
  // define this if you want to set the size of the memory blocks
73
63
  // used by the non-recursive algorithm.
74
64
  // #define BOOST_REGEX_BLOCKSIZE 4096
@@ -93,3 +83,7 @@
93
83
 
94
84
  // define this if you want regex to use __cdecl calling convensions, even when __fastcall is available:
95
85
  // #define BOOST_REGEX_NO_FASTCALL
86
+
87
+ // define this to control how deep non-avoidable recursive function calls can go, typical expressions
88
+ // and format strings should only recurse a handful of times, this is mainly to prevent DOS type attacks.
89
+ // #define BOOST_REGEX_MAX_RECURSION_DEPTH 100
@@ -19,7 +19,18 @@
19
19
  #ifndef BOOST_REGEX_V5_BASIC_REGEX_HPP
20
20
  #define BOOST_REGEX_V5_BASIC_REGEX_HPP
21
21
 
22
+ #include <boost/regex/v5/regbase.hpp>
23
+ #include <boost/regex/v5/syntax_type.hpp>
24
+ #include <boost/regex/v5/regex_traits.hpp>
25
+ #include <boost/regex/v5/states.hpp>
26
+ #include <boost/regex/v5/regex_raw_buffer.hpp>
27
+
28
+ #ifndef BOOST_REGEX_AS_MODULE
29
+ #include <algorithm>
30
+ #include <limits>
31
+ #include <memory>
22
32
  #include <vector>
33
+ #endif
23
34
 
24
35
  namespace boost{
25
36
  #ifdef BOOST_REGEX_MSVC
@@ -58,7 +69,12 @@ void bubble_down_one(I first, I last)
58
69
  }
59
70
  }
60
71
 
61
- static const int hash_value_mask = 1 << (std::numeric_limits<int>::digits - 1);
72
+ #ifndef BOOST_REGEX_AS_MODULE
73
+ static
74
+ #else
75
+ inline
76
+ #endif
77
+ const int hash_value_mask = 1 << (std::numeric_limits<int>::digits - 1);
62
78
 
63
79
  template <class Iterator>
64
80
  inline int hash_value_from_capture_name(Iterator i, Iterator j)
@@ -306,7 +322,7 @@ public:
306
322
  // represents the compiled
307
323
  // regular expression:
308
324
  //
309
-
325
+ BOOST_REGEX_MODULE_EXPORT
310
326
  #ifdef BOOST_REGEX_NO_FWD
311
327
  template <class charT, class traits = regex_traits<charT> >
312
328
  #else
@@ -488,7 +504,7 @@ public:
488
504
  }
489
505
  //
490
506
  // swap:
491
- void swap(basic_regex& that)throw()
507
+ void swap(basic_regex& that)noexcept
492
508
  {
493
509
  m_pimpl.swap(that.m_pimpl);
494
510
  }
@@ -533,7 +549,21 @@ public:
533
549
  return status() - that.status();
534
550
  if(flags() != that.flags())
535
551
  return flags() - that.flags();
536
- return str().compare(that.str());
552
+
553
+ const char_type* i = m_pimpl->begin();
554
+ const char_type* j = that.m_pimpl->begin();
555
+ while ((i != m_pimpl->end()) && (j != that.m_pimpl->end()))
556
+ {
557
+ if (*i != *j)
558
+ return *i < *j ? -1 : 1;
559
+ ++i;
560
+ ++j;
561
+ }
562
+ if (i != m_pimpl->end())
563
+ return *i > static_cast<char_type>(0) ? 1 : -1;
564
+ if (j != that.m_pimpl->end())
565
+ return *j > static_cast<char_type>(0) ? -1 : 1;
566
+ return 0;
537
567
  }
538
568
  bool operator==(const basic_regex& e)const
539
569
  {
@@ -629,22 +659,38 @@ private:
629
659
  // and are designed to provide the strong exception guarantee
630
660
  // (in the event of a throw, the state of the object remains unchanged).
631
661
  //
662
+
663
+ namespace detail
664
+ {
665
+ template <class charT, class F, class Traits>
666
+ std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> > create_implemenation(const charT* p1, const charT* p2, F f, std::shared_ptr<boost::regex_traits_wrapper<Traits> > ptraits)
667
+ {
668
+ std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> > result;
669
+ if (!ptraits.get())
670
+ {
671
+ result = std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits>());
672
+ }
673
+ else
674
+ {
675
+ result = std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits> >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, Traits>(ptraits));
676
+ }
677
+ result->assign(p1, p2, f);
678
+ return result;
679
+ }
680
+ #ifdef BOOST_REGEX_AS_MODULE
681
+ std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<char, basic_regex<char>::traits_type> >
682
+ create_implemenation(const char* p1, const char* p2, basic_regex<char>::flag_type f, std::shared_ptr<boost::regex_traits_wrapper<basic_regex<char>::traits_type> > ptraits);
683
+ std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<wchar_t, basic_regex<wchar_t>::traits_type> >
684
+ create_implemenation(const wchar_t* p1, const wchar_t* p2, basic_regex<wchar_t>::flag_type f, std::shared_ptr<boost::regex_traits_wrapper<basic_regex<wchar_t>::traits_type> > ptraits);
685
+ #endif
686
+ }
687
+
632
688
  template <class charT, class traits>
633
689
  basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1,
634
690
  const charT* p2,
635
691
  flag_type f)
636
692
  {
637
- std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits> > temp;
638
- if(!m_pimpl.get())
639
- {
640
- temp = std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits> >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits>());
641
- }
642
- else
643
- {
644
- temp = std::shared_ptr<BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits> >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation<charT, traits>(m_pimpl->m_ptraits));
645
- }
646
- temp->assign(p1, p2, f);
647
- temp.swap(m_pimpl);
693
+ m_pimpl = detail::create_implemenation(p1, p2, f, m_pimpl.get() ? m_pimpl->m_ptraits : std::shared_ptr<boost::regex_traits_wrapper<traits> >());
648
694
  return *this;
649
695
  }
650
696
 
@@ -660,13 +706,13 @@ typename basic_regex<charT, traits>::locale_type basic_regex<charT, traits>::im
660
706
  //
661
707
  // non-members:
662
708
  //
663
- template <class charT, class traits>
709
+ BOOST_REGEX_MODULE_EXPORT template <class charT, class traits>
664
710
  void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2)
665
711
  {
666
712
  e1.swap(e2);
667
713
  }
668
714
 
669
- template <class charT, class traits, class traits2>
715
+ BOOST_REGEX_MODULE_EXPORT template <class charT, class traits, class traits2>
670
716
  std::basic_ostream<charT, traits>&
671
717
  operator << (std::basic_ostream<charT, traits>& os,
672
718
  const basic_regex<charT, traits2>& e)
@@ -28,7 +28,12 @@
28
28
  #endif
29
29
  #endif
30
30
 
31
+ #include <boost/regex/v5/basic_regex.hpp>
32
+
33
+ #ifndef BOOST_REGEX_AS_MODULE
34
+ #include <vector>
31
35
  #include <set>
36
+ #endif
32
37
 
33
38
  namespace boost{
34
39
 
@@ -217,8 +222,10 @@ public:
217
222
  m_icase = static_cast<bool>(f & regbase::icase);
218
223
  }
219
224
  }
220
- re_syntax_base* append_state(syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
221
- re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
225
+ re_syntax_base* append_state(syntax_element_type t, std::size_t s);
226
+ re_syntax_base* append_state(syntax_element_type t) { return append_state(t, sizeof(re_syntax_base)); }
227
+ re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s);
228
+ re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t) { return insert_state(pos, t, sizeof(re_syntax_base)); }
222
229
  re_literal* append_literal(charT c);
223
230
  re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set);
224
231
  re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, std::integral_constant<bool, false>*);
@@ -248,7 +255,7 @@ private:
248
255
  void fixup_recursions(re_syntax_base* state);
249
256
  void create_startmaps(re_syntax_base* state);
250
257
  int calculate_backstep(re_syntax_base* state);
251
- void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask);
258
+ void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask, unsigned recursion_count = 0);
252
259
  unsigned get_restart_type(re_syntax_base* state);
253
260
  void set_all_masks(unsigned char* bits, unsigned char);
254
261
  bool is_bad_repeat(re_syntax_base* pt);
@@ -971,7 +978,12 @@ template <class charT, class traits>
971
978
  int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state)
972
979
  {
973
980
  typedef typename traits::char_class_type m_type;
981
+
974
982
  int result = 0;
983
+ int last_alternative_result = -1;
984
+
985
+ std::vector<std::tuple<int, re_syntax_base*>> stack;
986
+
975
987
  while(state)
976
988
  {
977
989
  switch(state->type)
@@ -990,9 +1002,28 @@ int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state
990
1002
  }
991
1003
  break;
992
1004
  case syntax_element_endmark:
993
- if((static_cast<re_brace*>(state)->index == -1)
1005
+ if ((static_cast<re_brace*>(state)->index == -1)
994
1006
  || (static_cast<re_brace*>(state)->index == -2))
995
- return result;
1007
+ {
1008
+ // We've finished the calculation, check against any previous alternatives:
1009
+ if (last_alternative_result >= 0)
1010
+ {
1011
+ if (last_alternative_result != result)
1012
+ return -1;
1013
+ }
1014
+ else
1015
+ last_alternative_result = result;
1016
+
1017
+ if (stack.size())
1018
+ {
1019
+ // Skip to next alternative and calculate that as well:
1020
+ std::tie(result, state) = stack.back();
1021
+ stack.pop_back();
1022
+ continue;
1023
+ }
1024
+ else
1025
+ return result;
1026
+ }
996
1027
  break;
997
1028
  case syntax_element_literal:
998
1029
  result += static_cast<re_literal*>(state)->length;
@@ -1048,11 +1079,13 @@ int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state
1048
1079
  continue;
1049
1080
  case syntax_element_alt:
1050
1081
  {
1051
- int r1 = calculate_backstep(state->next.p);
1052
- int r2 = calculate_backstep(static_cast<re_alt*>(state)->alt.p);
1053
- if((r1 < 0) || (r1 != r2))
1082
+ // Push the alternative if we haven't pushed too many already:
1083
+ if(stack.size() > BOOST_REGEX_MAX_BLOCKS)
1054
1084
  return -1;
1055
- return result + r1;
1085
+ stack.push_back(std::make_tuple(result, static_cast<re_alt*>(state)->alt.p));
1086
+ // and take the first one:
1087
+ state = state->next.p;
1088
+ continue;
1056
1089
  }
1057
1090
  default:
1058
1091
  break;
@@ -1074,7 +1107,7 @@ struct recursion_saver
1074
1107
  };
1075
1108
 
1076
1109
  template <class charT, class traits>
1077
- void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask)
1110
+ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask, unsigned recursion_count)
1078
1111
  {
1079
1112
  recursion_saver saved_recursions(&m_recursion_checks);
1080
1113
  int not_last_jump = 1;
@@ -1085,6 +1118,28 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
1085
1118
  // track case sensitivity:
1086
1119
  bool l_icase = m_icase;
1087
1120
 
1121
+ if (recursion_count > BOOST_REGEX_MAX_RECURSION_DEPTH)
1122
+ {
1123
+ // Oops error:
1124
+ if (0 == this->m_pdata->m_status) // update the error code if not already set
1125
+ this->m_pdata->m_status = boost::regex_constants::error_complexity;
1126
+ //
1127
+ // clear the expression, we should be empty:
1128
+ //
1129
+ this->m_pdata->m_expression = 0;
1130
+ this->m_pdata->m_expression_len = 0;
1131
+ //
1132
+ // and throw if required:
1133
+ //
1134
+ if (0 == (this->flags() & regex_constants::no_except))
1135
+ {
1136
+ std::string message = "Expression complexity exceeded.";
1137
+ boost::regex_error e(message, boost::regex_constants::error_complexity, 0);
1138
+ e.raise();
1139
+ }
1140
+ return;
1141
+ }
1142
+
1088
1143
  while(state)
1089
1144
  {
1090
1145
  switch(state->type)
@@ -1122,7 +1177,7 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
1122
1177
  }
1123
1178
  // now figure out if we can match a NULL string at this point:
1124
1179
  if(pnull)
1125
- create_startmap(state->next.p, 0, pnull, mask);
1180
+ create_startmap(state->next.p, 0, pnull, mask, ++recursion_count);
1126
1181
  return;
1127
1182
  }
1128
1183
  case syntax_element_recurse:
@@ -1184,7 +1239,7 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
1184
1239
  case syntax_element_word_start:
1185
1240
  {
1186
1241
  // recurse, then AND with all the word characters:
1187
- create_startmap(state->next.p, l_map, pnull, mask);
1242
+ create_startmap(state->next.p, l_map, pnull, mask, ++recursion_count);
1188
1243
  if(l_map)
1189
1244
  {
1190
1245
  l_map[0] |= mask_init;
@@ -1199,7 +1254,7 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
1199
1254
  case syntax_element_word_end:
1200
1255
  {
1201
1256
  // recurse, then AND with all the word characters:
1202
- create_startmap(state->next.p, l_map, pnull, mask);
1257
+ create_startmap(state->next.p, l_map, pnull, mask, ++recursion_count);
1203
1258
  if(l_map)
1204
1259
  {
1205
1260
  l_map[0] |= mask_init;
@@ -1291,11 +1346,11 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
1291
1346
  return;
1292
1347
  }
1293
1348
  set_bad_repeat(state);
1294
- create_startmap(state->next.p, l_map, pnull, mask);
1349
+ create_startmap(state->next.p, l_map, pnull, mask, ++recursion_count);
1295
1350
  if((state->type == syntax_element_alt)
1296
1351
  || (static_cast<re_repeat*>(state)->min == 0)
1297
1352
  || (not_last_jump == 0))
1298
- create_startmap(rep->alt.p, l_map, pnull, mask);
1353
+ create_startmap(rep->alt.p, l_map, pnull, mask, ++recursion_count);
1299
1354
  }
1300
1355
  }
1301
1356
  return;
@@ -1354,7 +1409,7 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
1354
1409
  if(ok && ((m_recursion_checks[static_cast<re_brace*>(state)->index] & 2u) == 0))
1355
1410
  {
1356
1411
  m_recursion_checks[static_cast<re_brace*>(state)->index] |= 2u;
1357
- create_startmap(p->next.p, l_map, pnull, mask);
1412
+ create_startmap(p->next.p, l_map, pnull, mask, ++recursion_count);
1358
1413
  }
1359
1414
  }
1360
1415
  state = state->next.p;
@@ -19,6 +19,15 @@
19
19
  #ifndef BOOST_REGEX_V5_BASIC_REGEX_PARSER_HPP
20
20
  #define BOOST_REGEX_V5_BASIC_REGEX_PARSER_HPP
21
21
 
22
+ #include <boost/regex/v5/basic_regex_creator.hpp>
23
+
24
+ #ifndef BOOST_REGEX_AS_MODULE
25
+ #include <climits>
26
+ #include <cstdint>
27
+ #include <limits>
28
+ #include <type_traits>
29
+ #endif
30
+
22
31
  namespace boost{
23
32
  namespace BOOST_REGEX_DETAIL_NS{
24
33
 
@@ -889,6 +898,11 @@ escape_type_class_jump:
889
898
  }
890
899
  const charT* pc = m_position;
891
900
  std::intmax_t i = this->m_traits.toi(pc, m_end, 10);
901
+ if(i < 0 && !syn_end)
902
+ {
903
+ fail(regex_constants::error_backref, m_position - m_base);
904
+ return false;
905
+ }
892
906
  if((i < 0) && syn_end)
893
907
  {
894
908
  // Check for a named capture, get the leftmost one if there is more than one:
@@ -988,7 +1002,7 @@ bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_
988
1002
  if((m_position != m_end)
989
1003
  && (0 == (this->flags() & regbase::main_option_type))
990
1004
  && (this->m_traits.syntax_type(*m_position) == regex_constants::syntax_plus))
991
- {
1005
+ {
992
1006
  possessive = true;
993
1007
  ++m_position;
994
1008
  }
@@ -1105,6 +1119,13 @@ bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_
1105
1119
  else
1106
1120
  contin = false;
1107
1121
  break;
1122
+ case regex_constants::syntax_hash:
1123
+ if (this->flags() & regex_constants::mod_x) {
1124
+ while((m_position != m_end) && !is_separator(*m_position++)){}
1125
+ contin = true;
1126
+ break;
1127
+ }
1128
+ BOOST_REGEX_FALLTHROUGH;
1108
1129
  default:
1109
1130
  contin = false;
1110
1131
  }
@@ -19,9 +19,16 @@
19
19
  #ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
20
20
  #define BOOST_C_REGEX_TRAITS_HPP_INCLUDED
21
21
 
22
+ #ifndef BOOST_REGEX_AS_MODULE
23
+ #include <cctype>
24
+ #include <cstdint>
25
+ #include <cwctype>
26
+ #endif
27
+
22
28
  #include <boost/regex/config.hpp>
23
29
  #include <boost/regex/v5/regex_workaround.hpp>
24
- #include <cctype>
30
+ #include <boost/regex/v5/primary_transform.hpp>
31
+ #include <boost/regex/v5/regex_traits_defaults.hpp>
25
32
 
26
33
  namespace boost{
27
34
 
@@ -49,10 +56,10 @@ namespace boost{
49
56
 
50
57
  }
51
58
 
52
- template <class charT>
59
+ BOOST_REGEX_MODULE_EXPORT template <class charT>
53
60
  struct c_regex_traits;
54
61
 
55
- template<>
62
+ BOOST_REGEX_MODULE_EXPORT template<>
56
63
  struct c_regex_traits<char>
57
64
  {
58
65
  c_regex_traits(){}
@@ -97,7 +104,7 @@ private:
97
104
  };
98
105
 
99
106
  #ifndef BOOST_NO_WREGEX
100
- template<>
107
+ BOOST_REGEX_MODULE_EXPORT template<>
101
108
  struct c_regex_traits<wchar_t>
102
109
  {
103
110
  c_regex_traits(){}