passenger 5.1.4 → 5.1.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.editorconfig +9 -0
- data/CHANGELOG +9 -0
- data/build/cxx_tests.rb +11 -1
- data/build/documentation.rb +0 -32
- data/build/support/cxx_dependency_map.rb +602 -2
- data/build/test_basics.rb +3 -3
- data/dev/boost-patches/0001-Patch-boost-thread-so-that-oxt-thread-can-use-it.patch +48 -0
- data/dev/boost-patches/0002-Make-boost-thread_interrupted-derive-from-oxt-tracab.patch +33 -0
- data/dev/boost-patches/0003-Disable-a-Clang-pragma-to-prevent-warnings-on-OS-X.patch +25 -0
- data/dev/ci/README.md +121 -0
- data/dev/ci/lib/functions.sh +129 -0
- data/dev/ci/lib/set-container-envvars.sh +46 -0
- data/dev/ci/lib/setup-container.sh +43 -0
- data/dev/ci/run-tests-natively +24 -0
- data/dev/ci/run-tests-with-docker +42 -0
- data/dev/ci/scripts/debug-console-wrapper.sh +27 -0
- data/dev/ci/scripts/docker-entrypoint-stage2.sh +17 -0
- data/dev/ci/scripts/docker-entrypoint.sh +17 -0
- data/dev/ci/scripts/inituidgid +17 -0
- data/dev/ci/scripts/run-tests-natively-stage2.sh +17 -0
- data/dev/ci/scripts/setup-host-natively.sh +11 -0
- data/dev/ci/setup-host +50 -0
- data/dev/ci/tests/apache2/run +6 -0
- data/dev/ci/tests/apache2/setup +4 -0
- data/dev/ci/tests/cxx/run +9 -0
- data/dev/ci/tests/cxx/setup +4 -0
- data/dev/ci/tests/nginx-dynamic/run +20 -0
- data/dev/ci/tests/nginx-dynamic/setup +4 -0
- data/dev/ci/tests/nginx/run +5 -0
- data/dev/ci/tests/nginx/setup +4 -0
- data/dev/ci/tests/nodejs/run +4 -0
- data/dev/ci/tests/nodejs/setup +4 -0
- data/dev/ci/tests/ruby/run +4 -0
- data/dev/ci/tests/ruby/setup +4 -0
- data/dev/ci/tests/source-packaging/run +4 -0
- data/dev/ci/tests/source-packaging/setup +4 -0
- data/dev/ci/tests/standalone/run +4 -0
- data/dev/ci/tests/standalone/setup +4 -0
- data/dev/copy_boost_headers +8 -2
- data/src/agent/Core/ApiServer.h +11 -5
- data/src/agent/Core/Controller.h +12 -46
- data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
- data/src/agent/Core/Controller/Config.h +369 -0
- data/src/agent/Core/Controller/ForwardResponse.cpp +4 -4
- data/src/agent/Core/Controller/Hooks.cpp +15 -3
- data/src/agent/Core/Controller/Implementation.cpp +1 -1
- data/src/agent/Core/Controller/InitRequest.cpp +28 -39
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +25 -60
- data/src/agent/Core/Controller/InternalUtils.cpp +0 -16
- data/src/agent/Core/Controller/Miscellaneous.cpp +0 -17
- data/src/agent/Core/Controller/Request.h +2 -0
- data/src/agent/Core/Controller/SendRequest.cpp +4 -4
- data/src/agent/Core/Controller/{StateInspectionAndConfiguration.cpp → StateInspection.cpp} +0 -22
- data/src/agent/Core/Controller/TurboCaching.h +11 -10
- data/src/agent/Core/CoreMain.cpp +16 -6
- data/src/agent/Core/ResponseCache.h +3 -3
- data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -3
- data/src/agent/Core/SpawningKit/Spawner.h +7 -3
- data/src/agent/UstRouter/ApiServer.h +3 -2
- data/src/agent/UstRouter/Controller.h +66 -32
- data/src/agent/UstRouter/UstRouterMain.cpp +10 -2
- data/src/agent/Watchdog/ApiServer.h +3 -2
- data/src/agent/Watchdog/WatchdogMain.cpp +3 -1
- data/src/apache2_module/ConfigurationCommands.cpp +1 -1
- data/src/cxx_supportlib/ConfigKit/Common.h +125 -0
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +34 -0
- data/src/cxx_supportlib/ConfigKit/README.md +895 -0
- data/src/cxx_supportlib/ConfigKit/Schema.h +331 -0
- data/src/cxx_supportlib/ConfigKit/Store.h +385 -0
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +185 -0
- data/src/cxx_supportlib/ConfigKit/Utils.h +141 -0
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +81 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Crypto.cpp +2 -2
- data/src/cxx_supportlib/Logging.h +0 -35
- data/src/cxx_supportlib/ServerKit/HttpServer.h +35 -16
- data/src/cxx_supportlib/ServerKit/Server.h +65 -25
- data/src/cxx_supportlib/oxt/macros.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +53 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +28 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +90 -18
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +35 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/compaq_cxx.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +29 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sgi_mipspro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +44 -16
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +33 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -27
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +62 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +39 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +49 -32
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +175 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +223 -98
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +45 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +205 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +290 -181
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +320 -46
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +91 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +491 -120
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +399 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +19 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +117 -59
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +33 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +414 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +134 -117
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +202 -99
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +217 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +29 -27
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +27 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +25 -3
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +114 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +116 -142
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +57 -69
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +35 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +37 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +209 -72
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +58 -45
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +83 -57
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +70 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +22 -21
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +29 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +33 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +19 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +21 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +103 -29
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +295 -211
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +20 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +43 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +96 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +102 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +48 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +167 -23
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +100 -46
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -27
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +30 -14
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +35 -36
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +6 -28
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +20 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +2437 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +127 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +637 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -116
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +227 -32
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +30 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +84 -80
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +14 -20
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +32 -33
- data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +49 -49
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +197 -255
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +1059 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +372 -554
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +16 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/cat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/to_list.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +102 -87
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +45 -21
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +5 -14
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +116 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1004 -159
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +4 -58
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +28 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +52 -144
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +120 -450
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +70 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +22 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +163 -55
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/locks.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_functors.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +265 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +40 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4986 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +1814 -1255
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1498 -1161
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -44
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/utility/compare_pointees.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +39 -22
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +690 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view_fwd.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/helper-scripts/crash-watch.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -12
- metadata +77 -38
- data/dev/ci/inituidgid +0 -24
- data/dev/ci/run_jenkins.sh +0 -70
- data/dev/ci/run_travis.sh +0 -314
- data/doc/Design and Architecture.html +0 -2421
- data/doc/Design and Architecture.txt +0 -511
- data/doc/Security of user switching support.html +0 -1833
- data/doc/Users guide Apache.html +0 -3101
- data/doc/Users guide Apache.idmap.txt +0 -451
- data/doc/Users guide Apache.txt +0 -534
- data/doc/Users guide Nginx.html +0 -3026
- data/doc/Users guide Nginx.idmap.txt +0 -431
- data/doc/Users guide Nginx.txt +0 -451
- data/doc/Users guide Standalone.html +0 -2092
- data/doc/Users guide Standalone.idmap.txt +0 -137
- data/doc/Users guide Standalone.txt +0 -81
- data/doc/Users guide.html +0 -1606
- data/doc/Users guide.txt +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -383
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +0 -318
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +0 -214
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +0 -1128
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +0 -928
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +0 -686
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +0 -188
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +0 -873
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +0 -628
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +0 -266
@@ -38,6 +38,21 @@ namespace BOOST_REGEX_DETAIL_NS{
|
|
38
38
|
#pragma warning(disable:4244 4800)
|
39
39
|
#endif
|
40
40
|
|
41
|
+
inline boost::intmax_t umax(mpl::false_ const&)
|
42
|
+
{
|
43
|
+
// Get out clause here, just in case numeric_limits is unspecialized:
|
44
|
+
return std::numeric_limits<boost::intmax_t>::is_specialized ? (std::numeric_limits<boost::intmax_t>::max)() : INT_MAX;
|
45
|
+
}
|
46
|
+
inline boost::intmax_t umax(mpl::true_ const&)
|
47
|
+
{
|
48
|
+
return (std::numeric_limits<std::size_t>::max)();
|
49
|
+
}
|
50
|
+
|
51
|
+
inline boost::intmax_t umax()
|
52
|
+
{
|
53
|
+
return umax(mpl::bool_<std::numeric_limits<boost::intmax_t>::digits >= std::numeric_limits<std::size_t>::digits>());
|
54
|
+
}
|
55
|
+
|
41
56
|
template <class charT, class traits>
|
42
57
|
class basic_regex_parser : public basic_regex_creator<charT, traits>
|
43
58
|
{
|
@@ -496,7 +511,8 @@ bool basic_regex_parser<charT, traits>::parse_open_paren()
|
|
496
511
|
this->fail(regex_constants::error_paren, ::boost::BOOST_REGEX_DETAIL_NS::distance(m_base, m_end));
|
497
512
|
return false;
|
498
513
|
}
|
499
|
-
|
514
|
+
if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
|
515
|
+
return false;
|
500
516
|
#ifndef BOOST_NO_STD_DISTANCE
|
501
517
|
if(markid && (this->flags() & regbase::save_subexpression_location))
|
502
518
|
this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position);
|
@@ -528,7 +544,11 @@ bool basic_regex_parser<charT, traits>::parse_open_paren()
|
|
528
544
|
template <class charT, class traits>
|
529
545
|
bool basic_regex_parser<charT, traits>::parse_basic_escape()
|
530
546
|
{
|
531
|
-
++m_position
|
547
|
+
if(++m_position == m_end)
|
548
|
+
{
|
549
|
+
fail(regex_constants::error_paren, m_position - m_base);
|
550
|
+
return false;
|
551
|
+
}
|
532
552
|
bool result = true;
|
533
553
|
switch(this->m_traits.escape_syntax_type(*m_position))
|
534
554
|
{
|
@@ -868,7 +888,7 @@ escape_type_class_jump:
|
|
868
888
|
return false;
|
869
889
|
}
|
870
890
|
const charT* pc = m_position;
|
871
|
-
|
891
|
+
boost::intmax_t i = this->m_traits.toi(pc, m_end, 10);
|
872
892
|
if((i < 0) && syn_end)
|
873
893
|
{
|
874
894
|
// Check for a named capture, get the leftmost one if there is more than one:
|
@@ -882,7 +902,7 @@ escape_type_class_jump:
|
|
882
902
|
}
|
883
903
|
if(negative)
|
884
904
|
i = 1 + m_mark_count - i;
|
885
|
-
if(((i > 0) && (this->m_backrefs & (1u << (i-1)))) || ((i > 10000) && (this->m_pdata->get_id(i) > 0) && (this->m_backrefs & (1u << (this->m_pdata->get_id(i)-1)))))
|
905
|
+
if(((i > 0) && (i < std::numeric_limits<unsigned>::digits) && (i - 1 < static_cast<boost::intmax_t>(sizeof(unsigned) * CHAR_BIT)) && (this->m_backrefs & (1u << (i-1)))) || ((i > 10000) && (this->m_pdata->get_id(i) > 0) && (this->m_pdata->get_id(i)-1 < static_cast<boost::intmax_t>(sizeof(unsigned) * CHAR_BIT)) && (this->m_backrefs & (1u << (this->m_pdata->get_id(i)-1)))))
|
886
906
|
{
|
887
907
|
m_position = pc;
|
888
908
|
re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace)));
|
@@ -1075,7 +1095,7 @@ bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
|
|
1075
1095
|
// parse a repeat-range:
|
1076
1096
|
//
|
1077
1097
|
std::size_t min, max;
|
1078
|
-
|
1098
|
+
boost::intmax_t v;
|
1079
1099
|
// skip whitespace:
|
1080
1100
|
while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
|
1081
1101
|
++m_position;
|
@@ -1094,7 +1114,7 @@ bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
|
|
1094
1114
|
// get min:
|
1095
1115
|
v = this->m_traits.toi(m_position, m_end, 10);
|
1096
1116
|
// skip whitespace:
|
1097
|
-
if(v < 0)
|
1117
|
+
if((v < 0) || (v > umax()))
|
1098
1118
|
{
|
1099
1119
|
if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex))
|
1100
1120
|
{
|
@@ -1120,7 +1140,7 @@ bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
|
|
1120
1140
|
while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
|
1121
1141
|
return parse_literal();
|
1122
1142
|
}
|
1123
|
-
min = v;
|
1143
|
+
min = static_cast<std::size_t>(v);
|
1124
1144
|
// see if we have a comma:
|
1125
1145
|
if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_comma)
|
1126
1146
|
{
|
@@ -1143,7 +1163,7 @@ bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
|
|
1143
1163
|
}
|
1144
1164
|
// get the value if any:
|
1145
1165
|
v = this->m_traits.toi(m_position, m_end, 10);
|
1146
|
-
max = (v >= 0) ? (std::size_t)v : (std::numeric_limits<std::size_t>::max)();
|
1166
|
+
max = ((v >= 0) && (v < umax())) ? (std::size_t)v : (std::numeric_limits<std::size_t>::max)();
|
1147
1167
|
}
|
1148
1168
|
else
|
1149
1169
|
{
|
@@ -1665,19 +1685,19 @@ digraph<charT> basic_regex_parser<charT, traits>::get_next_set_literal(basic_cha
|
|
1665
1685
|
// does a value fit in the specified charT type?
|
1666
1686
|
//
|
1667
1687
|
template <class charT>
|
1668
|
-
bool valid_value(charT,
|
1688
|
+
bool valid_value(charT, boost::intmax_t v, const mpl::true_&)
|
1669
1689
|
{
|
1670
1690
|
return (v >> (sizeof(charT) * CHAR_BIT)) == 0;
|
1671
1691
|
}
|
1672
1692
|
template <class charT>
|
1673
|
-
bool valid_value(charT,
|
1693
|
+
bool valid_value(charT, boost::intmax_t, const mpl::false_&)
|
1674
1694
|
{
|
1675
1695
|
return true; // v will alsways fit in a charT
|
1676
1696
|
}
|
1677
1697
|
template <class charT>
|
1678
|
-
bool valid_value(charT c,
|
1698
|
+
bool valid_value(charT c, boost::intmax_t v)
|
1679
1699
|
{
|
1680
|
-
return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(
|
1700
|
+
return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(boost::intmax_t))>());
|
1681
1701
|
}
|
1682
1702
|
|
1683
1703
|
template <class charT, class traits>
|
@@ -1753,10 +1773,10 @@ charT basic_regex_parser<charT, traits>::unescape_character()
|
|
1753
1773
|
fail(regex_constants::error_escape, m_position - m_base, "Missing } in hexadecimal escape sequence.");
|
1754
1774
|
return result;
|
1755
1775
|
}
|
1756
|
-
|
1776
|
+
boost::intmax_t i = this->m_traits.toi(m_position, m_end, 16);
|
1757
1777
|
if((m_position == m_end)
|
1758
1778
|
|| (i < 0)
|
1759
|
-
|| ((std::numeric_limits<charT>::is_specialized) && (i > (
|
1779
|
+
|| ((std::numeric_limits<charT>::is_specialized) && (i > (boost::intmax_t)(std::numeric_limits<charT>::max)()))
|
1760
1780
|
|| (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
|
1761
1781
|
{
|
1762
1782
|
// Rewind to start of escape:
|
@@ -1771,7 +1791,7 @@ charT basic_regex_parser<charT, traits>::unescape_character()
|
|
1771
1791
|
else
|
1772
1792
|
{
|
1773
1793
|
std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), static_cast<std::ptrdiff_t>(m_end - m_position));
|
1774
|
-
|
1794
|
+
boost::intmax_t i = this->m_traits.toi(m_position, m_position + len, 16);
|
1775
1795
|
if((i < 0)
|
1776
1796
|
|| !valid_value(charT(0), i))
|
1777
1797
|
{
|
@@ -1790,7 +1810,7 @@ charT basic_regex_parser<charT, traits>::unescape_character()
|
|
1790
1810
|
// followed by up to 3 octal digits:
|
1791
1811
|
std::ptrdiff_t len = (std::min)(::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end), static_cast<std::ptrdiff_t>(4));
|
1792
1812
|
const charT* bp = m_position;
|
1793
|
-
|
1813
|
+
boost::intmax_t val = this->m_traits.toi(bp, bp + 1, 8);
|
1794
1814
|
if(val != 0)
|
1795
1815
|
{
|
1796
1816
|
// Rewind to start of escape:
|
@@ -1801,7 +1821,7 @@ charT basic_regex_parser<charT, traits>::unescape_character()
|
|
1801
1821
|
return result;
|
1802
1822
|
}
|
1803
1823
|
val = this->m_traits.toi(m_position, m_position + len, 8);
|
1804
|
-
if(val < 0)
|
1824
|
+
if((val < 0) || (val > (boost::intmax_t)(std::numeric_limits<charT>::max)()))
|
1805
1825
|
{
|
1806
1826
|
// Rewind to start of escape:
|
1807
1827
|
--m_position;
|
@@ -1874,7 +1894,7 @@ bool basic_regex_parser<charT, traits>::parse_backref()
|
|
1874
1894
|
{
|
1875
1895
|
BOOST_ASSERT(m_position != m_end);
|
1876
1896
|
const charT* pc = m_position;
|
1877
|
-
|
1897
|
+
boost::intmax_t i = this->m_traits.toi(pc, pc + 1, 10);
|
1878
1898
|
if((i == 0) || (((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) && (this->flags() & regbase::no_bk_refs)))
|
1879
1899
|
{
|
1880
1900
|
// not a backref at all but an octal escape sequence:
|
@@ -1996,7 +2016,7 @@ bool basic_regex_parser<charT, traits>::parse_perl_extension()
|
|
1996
2016
|
int max_mark = m_max_mark;
|
1997
2017
|
m_mark_reset = -1;
|
1998
2018
|
m_max_mark = m_mark_count;
|
1999
|
-
|
2019
|
+
boost::intmax_t v;
|
2000
2020
|
//
|
2001
2021
|
// select the actual extension used:
|
2002
2022
|
//
|
@@ -2577,7 +2597,7 @@ option_group_jump:
|
|
2577
2597
|
re_alt* alt = static_cast<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt)));
|
2578
2598
|
alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt);
|
2579
2599
|
}
|
2580
|
-
else if(this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
|
2600
|
+
else if(((std::ptrdiff_t)this->m_pdata->m_data.size() > (static_cast<re_alt*>(b)->alt.i + this->getoffset(b))) && (static_cast<re_alt*>(b)->alt.i > 0) && this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
|
2581
2601
|
{
|
2582
2602
|
// Can't have seen more than one alternative:
|
2583
2603
|
// Rewind to start of (? sequence:
|
@@ -2650,7 +2670,7 @@ option_group_jump:
|
|
2650
2670
|
//
|
2651
2671
|
// allow backrefs to this mark:
|
2652
2672
|
//
|
2653
|
-
if(
|
2673
|
+
if(markid < (int)(sizeof(unsigned) * CHAR_BIT))
|
2654
2674
|
this->m_backrefs |= 1u << (markid - 1);
|
2655
2675
|
}
|
2656
2676
|
return true;
|
@@ -2841,6 +2861,10 @@ bool basic_regex_parser<charT, traits>::parse_perl_verb()
|
|
2841
2861
|
}
|
2842
2862
|
break;
|
2843
2863
|
}
|
2864
|
+
// Rewind to start of (* sequence:
|
2865
|
+
--m_position;
|
2866
|
+
while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
|
2867
|
+
fail(regex_constants::error_perl_extension, m_position - m_base);
|
2844
2868
|
return false;
|
2845
2869
|
}
|
2846
2870
|
|
@@ -1027,11 +1027,11 @@ public:
|
|
1027
1027
|
return m_pimpl->isctype(c, f);
|
1028
1028
|
#endif
|
1029
1029
|
}
|
1030
|
-
|
1030
|
+
boost::intmax_t toi(const charT*& p1, const charT* p2, int radix)const;
|
1031
1031
|
int value(charT c, int radix)const
|
1032
1032
|
{
|
1033
1033
|
const charT* pc = &c;
|
1034
|
-
return toi(pc, pc + 1, radix);
|
1034
|
+
return (int)toi(pc, pc + 1, radix);
|
1035
1035
|
}
|
1036
1036
|
locale_type imbue(locale_type l)
|
1037
1037
|
{
|
@@ -1069,7 +1069,7 @@ private:
|
|
1069
1069
|
|
1070
1070
|
|
1071
1071
|
template <class charT>
|
1072
|
-
|
1072
|
+
boost::intmax_t cpp_regex_traits<charT>::toi(const charT*& first, const charT* last, int radix)const
|
1073
1073
|
{
|
1074
1074
|
BOOST_REGEX_DETAIL_NS::parser_buf<charT> sbuf; // buffer for parsing numbers.
|
1075
1075
|
std::basic_istream<charT> is(&sbuf); // stream for parsing numbers.
|
@@ -1082,7 +1082,7 @@ int cpp_regex_traits<charT>::toi(const charT*& first, const charT* last, int rad
|
|
1082
1082
|
if(std::abs(radix) == 16) is >> std::hex;
|
1083
1083
|
else if(std::abs(radix) == 8) is >> std::oct;
|
1084
1084
|
else is >> std::dec;
|
1085
|
-
|
1085
|
+
boost::intmax_t val;
|
1086
1086
|
if(is >> val)
|
1087
1087
|
{
|
1088
1088
|
first = first + ((last - first) - sbuf.in_avail());
|
@@ -225,11 +225,11 @@ public:
|
|
225
225
|
mapfile_iterator() { node = 0; file = 0; offset = 0; }
|
226
226
|
mapfile_iterator(const mapfile* f, long arg_position)
|
227
227
|
{
|
228
|
+
BOOST_ASSERT(f);
|
228
229
|
file = f;
|
229
230
|
node = f->_first + arg_position / mapfile::buf_size;
|
230
231
|
offset = arg_position % mapfile::buf_size;
|
231
|
-
|
232
|
-
file->lock(node);
|
232
|
+
file->lock(node);
|
233
233
|
}
|
234
234
|
mapfile_iterator(const mapfile_iterator& i)
|
235
235
|
{
|
@@ -157,7 +157,7 @@ bool cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::isctype(const BOOST_RE
|
|
157
157
|
#endif
|
158
158
|
} // namespace
|
159
159
|
template BOOST_REGEX_DECL
|
160
|
-
|
160
|
+
boost::intmax_t cpp_regex_traits<BOOST_REGEX_CHAR_T>::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const;
|
161
161
|
template BOOST_REGEX_DECL
|
162
162
|
std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::catalog_name(const std::string& name);
|
163
163
|
template BOOST_REGEX_DECL
|
@@ -22,6 +22,7 @@
|
|
22
22
|
#ifdef __cplusplus
|
23
23
|
# include <boost/cstdint.hpp>
|
24
24
|
#endif
|
25
|
+
#include <boost/detail/workaround.hpp>
|
25
26
|
|
26
27
|
#ifdef __cplusplus
|
27
28
|
namespace boost{
|
@@ -67,11 +68,22 @@ typedef enum _match_flags
|
|
67
68
|
format_no_copy = format_all << 1, /* don't copy non-matching segments. */
|
68
69
|
format_first_only = format_no_copy << 1, /* Only replace first occurance. */
|
69
70
|
format_is_if = format_first_only << 1, /* internal use only. */
|
70
|
-
format_literal = format_is_if << 1
|
71
|
+
format_literal = format_is_if << 1, /* treat string as a literal */
|
72
|
+
|
73
|
+
match_not_any = match_not_bol | match_not_eol | match_not_bob
|
74
|
+
| match_not_eob | match_not_bow | match_not_eow | match_not_dot_newline
|
75
|
+
| match_not_dot_null | match_prev_avail | match_init | match_not_null
|
76
|
+
| match_continuous | match_partial | match_stop | match_not_initial_null
|
77
|
+
| match_stop | match_all | match_perl | match_posix | match_nosubs
|
78
|
+
| match_extra | match_single_line | match_unused1 | match_unused2
|
79
|
+
| match_unused3 | match_max | format_perl | format_default | format_sed
|
80
|
+
| format_all | format_no_copy | format_first_only | format_is_if
|
81
|
+
| format_literal
|
82
|
+
|
71
83
|
|
72
84
|
} match_flags;
|
73
85
|
|
74
|
-
#if defined(__BORLANDC__)
|
86
|
+
#if defined(__BORLANDC__) || BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
|
75
87
|
typedef unsigned long match_flag_type;
|
76
88
|
#else
|
77
89
|
typedef match_flags match_flag_type;
|
@@ -27,9 +27,54 @@
|
|
27
27
|
# include BOOST_ABI_PREFIX
|
28
28
|
#endif
|
29
29
|
|
30
|
+
#ifndef BOOST_NO_CXX11_HDR_ATOMIC
|
31
|
+
#include <atomic>
|
32
|
+
#if ATOMIC_POINTER_LOCK_FREE == 2
|
33
|
+
#define BOOST_REGEX_MEM_BLOCK_CACHE_LOCK_FREE
|
34
|
+
#define BOOST_REGEX_ATOMIC_POINTER std::atomic
|
35
|
+
#endif
|
36
|
+
#endif
|
37
|
+
|
30
38
|
namespace boost{
|
31
39
|
namespace BOOST_REGEX_DETAIL_NS{
|
32
40
|
|
41
|
+
#ifdef BOOST_REGEX_MEM_BLOCK_CACHE_LOCK_FREE /* lock free implementation */
|
42
|
+
struct mem_block_cache
|
43
|
+
{
|
44
|
+
std::atomic<void*> cache[BOOST_REGEX_MAX_CACHE_BLOCKS];
|
45
|
+
|
46
|
+
~mem_block_cache()
|
47
|
+
{
|
48
|
+
for (size_t i = 0;i < BOOST_REGEX_MAX_CACHE_BLOCKS; ++i) {
|
49
|
+
if (cache[i].load()) ::operator delete(cache[i].load());
|
50
|
+
}
|
51
|
+
}
|
52
|
+
void* get()
|
53
|
+
{
|
54
|
+
for (size_t i = 0;i < BOOST_REGEX_MAX_CACHE_BLOCKS; ++i) {
|
55
|
+
void* p = cache[i].load();
|
56
|
+
if (p != NULL) {
|
57
|
+
if (cache[i].compare_exchange_strong(p, NULL)) return p;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
return ::operator new(BOOST_REGEX_BLOCKSIZE);
|
61
|
+
}
|
62
|
+
void put(void* ptr)
|
63
|
+
{
|
64
|
+
for (size_t i = 0;i < BOOST_REGEX_MAX_CACHE_BLOCKS; ++i) {
|
65
|
+
void* p = cache[i].load();
|
66
|
+
if (p == NULL) {
|
67
|
+
if (cache[i].compare_exchange_strong(p, ptr)) return;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
::operator delete(ptr);
|
71
|
+
}
|
72
|
+
};
|
73
|
+
|
74
|
+
|
75
|
+
#else /* lock-based implementation */
|
76
|
+
|
77
|
+
|
33
78
|
struct mem_block_node
|
34
79
|
{
|
35
80
|
mem_block_node* next;
|
@@ -85,6 +130,7 @@ struct mem_block_cache
|
|
85
130
|
}
|
86
131
|
}
|
87
132
|
};
|
133
|
+
#endif
|
88
134
|
|
89
135
|
extern mem_block_cache block_cache;
|
90
136
|
|
@@ -161,9 +161,9 @@ iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
|
|
161
161
|
if(*p == static_cast<charT>(0))
|
162
162
|
{
|
163
163
|
// treat null string as special case:
|
164
|
-
if(traits_inst.translate(*ptr, icase)
|
164
|
+
if(traits_inst.translate(*ptr, icase))
|
165
165
|
{
|
166
|
-
|
166
|
+
++p;
|
167
167
|
continue;
|
168
168
|
}
|
169
169
|
return set_->isnot ? next : (ptr == next) ? ++next : ptr;
|
@@ -348,6 +348,7 @@ struct recursion_info
|
|
348
348
|
const re_syntax_base* preturn_address;
|
349
349
|
Results results;
|
350
350
|
repeater_count<iterator>* repeater_stack;
|
351
|
+
iterator location_of_start;
|
351
352
|
};
|
352
353
|
|
353
354
|
#ifdef BOOST_MSVC
|
@@ -537,6 +538,7 @@ private:
|
|
537
538
|
bool unwind_recursion_pop(bool);
|
538
539
|
bool unwind_commit(bool);
|
539
540
|
bool unwind_then(bool);
|
541
|
+
bool unwind_case(bool);
|
540
542
|
void destroy_single_repeat();
|
541
543
|
void push_matched_paren(int index, const sub_match<BidiIterator>& sub);
|
542
544
|
void push_recursion_stopper();
|
@@ -547,6 +549,7 @@ private:
|
|
547
549
|
void push_non_greedy_repeat(const re_syntax_base* ps);
|
548
550
|
void push_recursion(int idx, const re_syntax_base* p, results_type* presults);
|
549
551
|
void push_recursion_pop();
|
552
|
+
void push_case_change(bool);
|
550
553
|
|
551
554
|
// pointer to base of stack:
|
552
555
|
saved_state* m_stack_base;
|
@@ -90,7 +90,7 @@ void perl_matcher<BidiIterator, Allocator, traits>::construct_init(const basic_r
|
|
90
90
|
match_any_mask = static_cast<unsigned char>((f & match_not_dot_newline) ? BOOST_REGEX_DETAIL_NS::test_not_newline : BOOST_REGEX_DETAIL_NS::test_newline);
|
91
91
|
// Disable match_any if requested in the state machine:
|
92
92
|
if(e.get_data().m_disable_match_any)
|
93
|
-
m_match_flags &=
|
93
|
+
m_match_flags &= regex_constants::match_not_any;
|
94
94
|
}
|
95
95
|
|
96
96
|
template <class BidiIterator, class Allocator, class traits>
|
@@ -206,7 +206,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_imp()
|
|
206
206
|
search_base = base;
|
207
207
|
state_count = 0;
|
208
208
|
m_match_flags |= regex_constants::match_all;
|
209
|
-
m_presult->set_size((m_match_flags & match_nosubs) ?
|
209
|
+
m_presult->set_size((m_match_flags & match_nosubs) ? 1u : static_cast<typename results_type::size_type>(1u + re.mark_count()), search_base, last);
|
210
210
|
m_presult->set_base(base);
|
211
211
|
m_presult->set_named_subs(this->re.get_named_subs());
|
212
212
|
if(m_match_flags & match_posix)
|
@@ -268,7 +268,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::find_imp()
|
|
268
268
|
// reset our state machine:
|
269
269
|
search_base = position = base;
|
270
270
|
pstate = re.get_first_state();
|
271
|
-
m_presult->set_size((m_match_flags & match_nosubs) ?
|
271
|
+
m_presult->set_size((m_match_flags & match_nosubs) ? 1u : static_cast<typename results_type::size_type>(1u + re.mark_count()), base, last);
|
272
272
|
m_presult->set_base(base);
|
273
273
|
m_presult->set_named_subs(this->re.get_named_subs());
|
274
274
|
m_match_flags |= regex_constants::match_init;
|
@@ -287,13 +287,13 @@ bool perl_matcher<BidiIterator, Allocator, traits>::find_imp()
|
|
287
287
|
++position;
|
288
288
|
}
|
289
289
|
// reset $` start:
|
290
|
-
m_presult->set_size((m_match_flags & match_nosubs) ?
|
290
|
+
m_presult->set_size((m_match_flags & match_nosubs) ? 1u : static_cast<typename results_type::size_type>(1u + re.mark_count()), search_base, last);
|
291
291
|
//if((base != search_base) && (base == backstop))
|
292
292
|
// m_match_flags |= match_prev_avail;
|
293
293
|
}
|
294
294
|
if(m_match_flags & match_posix)
|
295
295
|
{
|
296
|
-
m_result.set_size(
|
296
|
+
m_result.set_size(static_cast<typename results_type::size_type>(1u + re.mark_count()), base, last);
|
297
297
|
m_result.set_base(base);
|
298
298
|
}
|
299
299
|
|
@@ -793,15 +793,6 @@ inline bool perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref(
|
|
793
793
|
return result;
|
794
794
|
}
|
795
795
|
|
796
|
-
template <class BidiIterator, class Allocator, class traits>
|
797
|
-
bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case()
|
798
|
-
{
|
799
|
-
// change our case sensitivity:
|
800
|
-
this->icase = static_cast<const re_case*>(pstate)->icase;
|
801
|
-
pstate = pstate->next.p;
|
802
|
-
return true;
|
803
|
-
}
|
804
|
-
|
805
796
|
template <class BidiIterator, class Allocator, class traits>
|
806
797
|
bool perl_matcher<BidiIterator, Allocator, traits>::match_fail()
|
807
798
|
{
|
@@ -131,13 +131,18 @@ template <class Results>
|
|
131
131
|
struct saved_recursion : public saved_state
|
132
132
|
{
|
133
133
|
saved_recursion(int idx, const re_syntax_base* p, Results* pr)
|
134
|
-
: saved_state(14), recursion_id(idx), preturn_address(p), results(*pr)
|
135
|
-
{}
|
134
|
+
: saved_state(14), recursion_id(idx), preturn_address(p), results(*pr) {}
|
136
135
|
int recursion_id;
|
137
136
|
const re_syntax_base* preturn_address;
|
138
137
|
Results results;
|
139
138
|
};
|
140
139
|
|
140
|
+
struct saved_change_case : public saved_state
|
141
|
+
{
|
142
|
+
bool icase;
|
143
|
+
saved_change_case(bool c) : saved_state(18), icase(c) {}
|
144
|
+
};
|
145
|
+
|
141
146
|
template <class BidiIterator, class Allocator, class traits>
|
142
147
|
bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
|
143
148
|
{
|
@@ -242,6 +247,22 @@ inline void perl_matcher<BidiIterator, Allocator, traits>::push_matched_paren(in
|
|
242
247
|
m_backup_state = pmp;
|
243
248
|
}
|
244
249
|
|
250
|
+
template <class BidiIterator, class Allocator, class traits>
|
251
|
+
inline void perl_matcher<BidiIterator, Allocator, traits>::push_case_change(bool c)
|
252
|
+
{
|
253
|
+
//BOOST_ASSERT(index);
|
254
|
+
saved_change_case* pmp = static_cast<saved_change_case*>(m_backup_state);
|
255
|
+
--pmp;
|
256
|
+
if(pmp < m_stack_base)
|
257
|
+
{
|
258
|
+
extend_stack();
|
259
|
+
pmp = static_cast<saved_change_case*>(m_backup_state);
|
260
|
+
--pmp;
|
261
|
+
}
|
262
|
+
(void) new (pmp)saved_change_case(c);
|
263
|
+
m_backup_state = pmp;
|
264
|
+
}
|
265
|
+
|
245
266
|
template <class BidiIterator, class Allocator, class traits>
|
246
267
|
inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion_stopper()
|
247
268
|
{
|
@@ -347,6 +368,16 @@ inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int id
|
|
347
368
|
m_backup_state = pmp;
|
348
369
|
}
|
349
370
|
|
371
|
+
template <class BidiIterator, class Allocator, class traits>
|
372
|
+
bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case()
|
373
|
+
{
|
374
|
+
// change our case sensitivity:
|
375
|
+
push_case_change(this->icase);
|
376
|
+
this->icase = static_cast<const re_case*>(pstate)->icase;
|
377
|
+
pstate = pstate->next.p;
|
378
|
+
return true;
|
379
|
+
}
|
380
|
+
|
350
381
|
template <class BidiIterator, class Allocator, class traits>
|
351
382
|
bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
352
383
|
{
|
@@ -373,7 +404,11 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
|
373
404
|
m_independent = true;
|
374
405
|
const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
|
375
406
|
pstate = pstate->next.p->next.p;
|
376
|
-
bool r =
|
407
|
+
bool r = false;
|
408
|
+
#if !defined(BOOST_NO_EXCEPTIONS)
|
409
|
+
try{
|
410
|
+
#endif
|
411
|
+
r = match_all_states();
|
377
412
|
if(!r && !m_independent)
|
378
413
|
{
|
379
414
|
// Must be unwinding from a COMMIT/SKIP/PRUNE and the independent
|
@@ -381,8 +416,20 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
|
381
416
|
while(unwind(false));
|
382
417
|
return false;
|
383
418
|
}
|
419
|
+
#if !defined(BOOST_NO_EXCEPTIONS)
|
420
|
+
}
|
421
|
+
catch(...)
|
422
|
+
{
|
384
423
|
pstate = next_pstate;
|
385
|
-
|
424
|
+
// unwind all pushed states, apart from anything else this
|
425
|
+
// ensures that all the states are correctly destructed
|
426
|
+
// not just the memory freed.
|
427
|
+
while(unwind(true)) {}
|
428
|
+
throw;
|
429
|
+
}
|
430
|
+
#endif
|
431
|
+
pstate = next_pstate;
|
432
|
+
m_independent = old_independent;
|
386
433
|
#ifdef BOOST_REGEX_MATCH_EXTRA
|
387
434
|
if(r && (m_match_flags & match_extra))
|
388
435
|
{
|
@@ -396,8 +443,23 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
|
396
443
|
for(i = 0; i < temp_match.size(); ++i)
|
397
444
|
(*m_presult)[i].get_captures().clear();
|
398
445
|
// match everything else:
|
399
|
-
|
400
|
-
|
446
|
+
#if !defined(BOOST_NO_EXCEPTIONS)
|
447
|
+
try{
|
448
|
+
#endif
|
449
|
+
r = match_all_states();
|
450
|
+
#if !defined(BOOST_NO_EXCEPTIONS)
|
451
|
+
}
|
452
|
+
catch(...)
|
453
|
+
{
|
454
|
+
pstate = next_pstate;
|
455
|
+
// unwind all pushed states, apart from anything else this
|
456
|
+
// ensures that all the states are correctly destructed
|
457
|
+
// not just the memory freed.
|
458
|
+
while(unwind(true)) {}
|
459
|
+
throw;
|
460
|
+
}
|
461
|
+
#endif
|
462
|
+
// now place the stored captures back:
|
401
463
|
for(i = 0; i < temp_match.size(); ++i)
|
402
464
|
{
|
403
465
|
typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
|
@@ -432,14 +494,29 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
|
432
494
|
BidiIterator saved_position = position;
|
433
495
|
const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
|
434
496
|
pstate = pstate->next.p->next.p;
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
r =
|
439
|
-
|
497
|
+
#if !defined(BOOST_NO_EXCEPTIONS)
|
498
|
+
try{
|
499
|
+
#endif
|
500
|
+
bool r = match_all_states();
|
501
|
+
position = saved_position;
|
502
|
+
if(negated)
|
503
|
+
r = !r;
|
504
|
+
if(r)
|
505
|
+
pstate = next_pstate;
|
506
|
+
else
|
507
|
+
pstate = alt->alt.p;
|
508
|
+
#if !defined(BOOST_NO_EXCEPTIONS)
|
509
|
+
}
|
510
|
+
catch(...)
|
511
|
+
{
|
440
512
|
pstate = next_pstate;
|
441
|
-
|
442
|
-
|
513
|
+
// unwind all pushed states, apart from anything else this
|
514
|
+
// ensures that all the states are correctly destructed
|
515
|
+
// not just the memory freed.
|
516
|
+
while(unwind(true)){}
|
517
|
+
throw;
|
518
|
+
}
|
519
|
+
#endif
|
443
520
|
break;
|
444
521
|
}
|
445
522
|
}
|
@@ -921,6 +998,19 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
|
|
921
998
|
{
|
922
999
|
BOOST_ASSERT(pstate->type == syntax_element_recurse);
|
923
1000
|
//
|
1001
|
+
// See if we've seen this recursion before at this location, if we have then
|
1002
|
+
// we need to prevent infinite recursion:
|
1003
|
+
//
|
1004
|
+
for(typename std::vector<recursion_info<results_type> >::reverse_iterator i = recursion_stack.rbegin(); i != recursion_stack.rend(); ++i)
|
1005
|
+
{
|
1006
|
+
if(i->idx == static_cast<const re_brace*>(static_cast<const re_jump*>(pstate)->alt.p)->index)
|
1007
|
+
{
|
1008
|
+
if(i->location_of_start == position)
|
1009
|
+
return false;
|
1010
|
+
break;
|
1011
|
+
}
|
1012
|
+
}
|
1013
|
+
//
|
924
1014
|
// Backup call stack:
|
925
1015
|
//
|
926
1016
|
push_recursion_pop();
|
@@ -936,6 +1026,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
|
|
936
1026
|
recursion_stack.back().results = *m_presult;
|
937
1027
|
pstate = static_cast<const re_jump*>(pstate)->alt.p;
|
938
1028
|
recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
|
1029
|
+
recursion_stack.back().location_of_start = position;
|
939
1030
|
//if(static_cast<const re_recurse*>(pstate)->state_id > 0)
|
940
1031
|
{
|
941
1032
|
push_repeater_count(-(2 + static_cast<const re_brace*>(pstate)->index), &next_count);
|
@@ -1142,6 +1233,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind(bool have_match)
|
|
1142
1233
|
&perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_pop,
|
1143
1234
|
&perl_matcher<BidiIterator, Allocator, traits>::unwind_commit,
|
1144
1235
|
&perl_matcher<BidiIterator, Allocator, traits>::unwind_then,
|
1236
|
+
&perl_matcher<BidiIterator, Allocator, traits>::unwind_case,
|
1145
1237
|
};
|
1146
1238
|
|
1147
1239
|
m_recursive_result = have_match;
|
@@ -1170,6 +1262,16 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_end(bool)
|
|
1170
1262
|
return false; // end of stack nothing more to search
|
1171
1263
|
}
|
1172
1264
|
|
1265
|
+
template <class BidiIterator, class Allocator, class traits>
|
1266
|
+
bool perl_matcher<BidiIterator, Allocator, traits>::unwind_case(bool)
|
1267
|
+
{
|
1268
|
+
saved_change_case* pmp = static_cast<saved_change_case*>(m_backup_state);
|
1269
|
+
icase = pmp->icase;
|
1270
|
+
boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++);
|
1271
|
+
m_backup_state = pmp;
|
1272
|
+
return true;
|
1273
|
+
}
|
1274
|
+
|
1173
1275
|
template <class BidiIterator, class Allocator, class traits>
|
1174
1276
|
bool perl_matcher<BidiIterator, Allocator, traits>::unwind_paren(bool have_match)
|
1175
1277
|
{
|
@@ -1662,6 +1764,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion(bool r)
|
|
1662
1764
|
recursion_stack.back().idx = pmp->recursion_id;
|
1663
1765
|
recursion_stack.back().preturn_address = pmp->preturn_address;
|
1664
1766
|
recursion_stack.back().results = pmp->results;
|
1767
|
+
recursion_stack.back().location_of_start = position;
|
1665
1768
|
}
|
1666
1769
|
boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++);
|
1667
1770
|
m_backup_state = pmp;
|