Commit Graph
324 Commits
Author SHA1 Message Date
Daniel Steck 300ffd2363 unintended whitespace change 2021-05-13 23:30:19 +01:00
Daniel Steck 8a652bd355 C++03 and (C) 2021-05-13 23:28:33 +01:00
Daniel Steck d4e76658a1 initial commit 2021-05-13 23:21:05 +01:00
Ion Gaztañaga a633906847 Fixes #59 ("Add noexcept support to the library"). 2021-04-19 11:17:48 +02:00
Ion Gaztañaga 1cec79608f Fixes #60 ("Licensing question for math.hpp"). Removes questioned, SO-based code since it was just an alternative version for non-MSVC/non-GCC compatible compilers. 2021-04-18 14:10:53 +02:00
Ion Gaztañaga 8bb619caf7 Fix indentation 2021-04-18 14:04:53 +02:00
Ion Gaztañaga 8a4c55a56d Merge pull request #57 from ecatmur/patch-1
UB: comparing unrelated pointers
2021-04-18 14:00:00 +02:00
Ion Gaztañaga c03b16b269 fast_log2: silence unused variable warning. 2021-03-14 08:15:33 +01:00
Ed Catmur 39f7315a42 UB: comparing unrelated pointers
detected by gcc10 asan:

==13==ERROR: AddressSanitizer: invalid-pointer-pair: 0x612000031cc8 0x61d0000000d0
    #0 0x18f3270 in boost::intrusive::bucket_plus_vtraits<...>::priv_get_bucket_num_no_hash_store(boost::intrusive::slist_iterator<boost::intrusive::trivial_value_traits<boost::intrusive::slist_node_traits<void*>, (boost::intrusive::link_mode_type)0>, false>, boost::move_detail::bool_<false>) libs/intrusive/include/boost/intrusive/hashtable.hpp:935
    #1 0x18f3270 in boost::intrusive::hashtable_impl<...>::priv_get_bucket_num_hash_dispatch(boost::intrusive::slist_iterator<boost::intrusive::trivial_value_traits<boost::intrusive::slist_node_traits<void*>, (boost::intrusive::link_mode_type)0>, false>, boost::move_detail::bool_<false>) libs/intrusive/include/boost/intrusive/hashtable.hpp:3509
    #2 0x18f3270 in boost::intrusive::hashtable_impl<...>::priv_get_bucket_num(boost::intrusive::slist_iterator<boost::intrusive::trivial_value_traits<boost::intrusive::slist_node_traits<void*>, (boost::intrusive::link_mode_type)0>, false>) /home/edward.catmur/packages/boost/1.75.0-maven6/libs/intrusive/include/boost/intrusive/hashtable.hpp:3500
    #3 0x18f3270 in boost::move_detail::disable_if_convertible<...>::type boost::intrusive::hashtable_impl<...>::erase_and_dispose<...>(...) libs/intrusive/include/boost/intrusive/hashtable.hpp:2360
2021-02-15 10:42:25 +00:00
Ion Gaztañaga 5c5f596d12 twin: Add constructor from two objects 2021-01-15 20:43:59 +01:00
Ion Gaztañaga f65f864f0e Include <stdlib.h> for _rotl in MSVC 2021-01-15 18:03:44 +01:00
Ion Gaztañaga 547c964381 - Reduced compile-time dependencies:
- linear_slist_algorithms use a simple node_ptr instead of std::pair on return.
  - list/slist use operator </operator == instead of std::equal_to/std::less.
2021-01-05 10:09:38 +01:00
Ion Gaztañaga c3ac8668ae Introduce a simplified hash_combine to avoid pulling STL dependencies from container_hash/hash.hpp for extremely simple cases. 2021-01-05 00:05:17 +01:00
Ion Gaztañaga 9c73691528 Update lightweight_test.hpp and hash.hpp references to the actual boost components. 2021-01-02 13:38:52 +01:00
Ion Gaztañaga 4d144d75da Fixes #54: ("set.rbegin() looks like O(log(N))") 2020-11-13 22:55:55 +01:00
Ion Gaztañaga cb3752dbb1 Use custom placement to avoid warning/errors when using -fno-exceptions. 2020-10-22 01:11:05 +02:00
Ion Gaztañaga 77af03117e Merge pull request #48 from stellarscience/patch-1
MSVC "assignment within conditional" warning fix
2020-10-19 13:32:22 +02:00
Ion Gaztañaga 8879091c66 Merge pull request #49 from SiggyBar/develop
Fix empty control statement warnings.
2020-10-19 13:26:17 +02:00
Ion Gaztañaga fc05116510 Merge pull request #51 from camolezi/patch-1
Add missing include
2020-08-31 23:22:57 +02:00
Ion Gaztañaga d61acfb8cd Fixes #52: ("Invalid casting in BOOST_INTRUSIVE_BSR_INTRINSIC") 2020-08-31 23:15:19 +02:00
Lucas Camolezi efb10791ca Add missing include
This patch makes the header able to be built standalone, making possible C++ clang modules builds.
2020-08-26 17:24:41 -03:00
SiggyBar 92d6e58bb7 Fix empty control statement warnings
This change replaces code like this:
      if(safemode_or_autounlink)
         BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));

with:
      BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || node_algorithms::unique(to_insert));

The reason for this change is that the first form generates
a warning for Visual C++ 14.1 in builds without asserts:
warning C4390: ';': empty controlled statement found; is this the intent?

Before this change the code was using a mix of the two forms
when invoking the BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT()
and BOOST_INTRUSIVE_INVARIANT_ASSERT() macros.  Now it
consistently uses the second form.
2020-02-07 10:46:55 +01:00
Conrad Poelman b45a3b7cdd MSVC "assignment within conditional" warning fix
The latest MSVC 2019 issues a warning on this line. This change performs the assignment prior to the conditional.
2020-01-25 16:07:29 -05:00
Ion Gaztañaga d8761780b0 Fixes #46: ("UB due to union based type punning") 2020-01-16 16:10:03 +01:00
Ion Gaztañaga c66d25859b Add some missing forceinlines 2020-01-16 16:09:11 +01:00
Ion Gaztañaga 3b5001f22f Fixes #42 ("Documentation does not describe treap priority_of_value changes") 2019-06-09 01:01:49 +02:00
Andrey Semashev 5852698f7a Disable variadic templates for MSVC-12 to avoid ICEs.
Fixes https://github.com/boostorg/intrusive/issues/44.
2019-05-26 19:55:43 +03:00
Ion Gaztañaga 2af47857f4 Update changelog with #43
Fix BOOST_INTRUSIVE_VARIADIC_TEMPLATES detection
2019-05-10 23:50:53 +02:00
Jeff Snyder b795de217b Allow void as an option with BOOST_INTRUSIVE_VARIADIC_TEMPLATES enabled 2019-05-09 05:17:28 +01:00
Ion Gaztañaga 215ef2617e Fix #34 ("-Wdeprecated-copy on gcc9) 2019-03-05 11:26:29 +01:00
Marcel Raad 4a254f5ebf Fix -Wextra-semi clang warnings
Remove superfluous semicola.
2019-02-25 10:55:25 +01:00
Ion Gaztañaga 9137a38982 Fixes #38 2019-02-12 23:20:49 +01:00
Ion Gaztañaga 3618260489 fix GitHub Issue #35 ("key_of_value on treap_set seems to be broken in 1.69") 2019-02-12 00:23:56 +01:00
Ion Gaztañaga 911774278a Declare more BOOST_INTRUSIVE_FORCEINLINE functions in tree and list containers. 2019-02-11 10:49:55 +01:00
Ion Gaztañaga 962eed5edb Rollback to previous tree_value_compare SFINAE, as enable_if imported from movelib now defaults to a sfinae-friendly type 2019-01-03 01:17:50 +01:00
Ion Gaztañaga 015fdaf9c5 Add missing BOOST_INTRUSIVE_FORCEINLINE 2019-01-03 01:17:01 +01:00
Ion Gaztañaga 558a204832 Add null-pointer checks 2019-01-03 01:16:46 +01:00
Ion Gaztañaga c6298131cb Use voider to adapt "sqrt2_pow_max" to the new enable_if default type 2019-01-03 01:16:26 +01:00
Ion Gaztañaga 98e5f0ee09 Import "voider" from movelib 2019-01-03 01:14:53 +01:00
Ion Gaztañaga b9c3b34651 Merge branch 'fix_voidptr_keys' of https://github.com/Lastique/intrusive into Lastique-fix_voidptr_keys 2019-01-02 02:17:16 +01:00
Andrey Semashev f847bd57bf Converted tabs to spaces. 2018-12-14 19:00:50 +03:00
Andrey Semashev 01d575bed4 Fix compilation in case if key is void*, again.
This commit fixes a compilation error with gcc 8.2 about ambiguous function
calls in tree_value_compare when the user specifies a key that has type void*.
The fix take approach similar to https://github.com/boostorg/intrusive/pull/21.
2018-12-14 18:46:28 +03:00
bad-ed cbf83bbebb hashtable: fixed build with BOOST_INTRUSIVE_VARIADIC_TEMPLATES defined 2018-10-10 17:14:50 +03:00
Ion Gaztañaga 2ab3421b17 In functions that modify data structures, take pointers by value instead of by reference, to avoid aliasing issues. 2018-09-27 10:14:16 +02:00
Ion Gaztañaga d94fbc76cc Add customized return type for tree_value_compare 2018-09-15 00:58:43 +02:00
Ion Gaztañaga fa3a6af325 Add BOOST_INTRUSIVE_FORCEINLINE to unordered_multiset constructors 2018-09-15 00:58:21 +02:00
Ion Gaztañaga d7b0d7c1e4 Silence unharmful -Wmaybe-uninitialized warning 2018-06-22 00:00:56 +02:00
Ion Gaztañaga 00efc25144 Reorder disabled warnings for clarity 2017-12-10 23:34:48 +01:00
Ion Gaztañaga 53b1aef2da Refactor suggested_upper_bucket_count/suggested_lower_bucket_count to be independent of the hashtable. 2017-12-09 13:01:49 +01:00
Ion Gaztañaga 71317671ec Add GCC's "-Wuninitialized" workaround. When initializing the pointer of flags part of an uninitialized pointer plus bit object, the other part is used uninitialized. It's harmless warning but annoying for the user. 2017-12-09 13:01:02 +01:00