Skip to content

Build fails with -Werror: error: array subscript is partly outside array bounds of 'std::aligned_storage_t<16, 16> [1]' {aka 'std::aligned_storage<16, 16>::type [1]'} #307

@barracuda156

Description

@barracuda156

Release fails on

In file included from /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/rrbtree.hpp:12,
                 from /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/flex_vector.hpp:11,
                 from /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/example/flex-vector/flex-vector.cpp:9:
In member function 'immer::detail::rbts::node<T, MemoryPolicy, B, BL>::node_t* immer::detail::rbts::node<T, MemoryPolicy, B, BL>::inc() [with T = int; MemoryPolicy = immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>; unsigned int B = 5; unsigned int BL = 5]',
    inlined from 'immer::detail::rbts::concat_center_pos<Node> immer::detail::rbts::concat_leafs(LPos&&, TPos&&, RPos&&) [with Node = node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5>; LPos = singleton_regular_sub_pos<node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; TPos = empty_leaf_pos<node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; RPos = full_leaf_pos<node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&]' at /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/operations.hpp:1855:9,
    inlined from 'static immer::detail::rbts::concat_center_pos<Node> immer::detail::rbts::concat_right_visitor<Node>::visit_leaf(RPos&&, LPos&&, TPos&&) [with RPos = immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; LPos = immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; TPos = immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; Node = immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5>]' at /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/operations.hpp:1920:34,
    inlined from 'decltype(auto) immer::detail::rbts::full_leaf_pos<NodeT>::visit(Visitor, Args&& ...) [with Visitor = immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >; Args = {immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5, 5> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5, 5> >&}; NodeT = immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5>]' at /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/position.hpp:206:35,
    inlined from 'decltype(auto) immer::detail::rbts::full_pos<NodeT>::first_sub(Visitor, Args&& ...) [with Visitor = immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >; Args = {immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5, 5> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5, 5> >&}; NodeT = immer::detail::rbts::node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5>]' at /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/position.hpp:1356:57,
    inlined from 'immer::detail::rbts::concat_center_pos<Node> immer::detail::rbts::concat_inners(LPos&&, TPos&&, RPos&&) [with Node = node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5>; LPos = singleton_regular_sub_pos<node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; TPos = empty_leaf_pos<node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&; RPos = full_pos<node<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5, 5> >&]' at /opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/operations.hpp:1874:35:
/opt/local/var/macports/build/immer-4e303043/work/immer-0.8.1/immer/detail/rbts/node.hpp:947:23: error: 'this' pointer is null [-Werror=nonnull]
  947 |         refs(this).inc();
      |         ~~~~~~~~~~~~~~^~

Master fails on

In file included from /opt/local/var/macports/build/immer-4e303043/work/immer-df6ef46d97e1fe81f397015b9aeb32505cef653b/immer/detail/hamts/champ.hpp:12,
                 from /opt/local/var/macports/build/immer-4e303043/work/immer-df6ef46d97e1fe81f397015b9aeb32505cef653b/immer/map.hpp:12,
                 from /opt/local/var/macports/build/immer-4e303043/work/immer-df6ef46d97e1fe81f397015b9aeb32505cef653b/test/algorithm.cpp:3:
In static member function 'static immer::detail::hamts::node<T, Hash, Equal, MemoryPolicy, B>::node_t* immer::detail::hamts::node<T, Hash, Equal, MemoryPolicy, B>::make_inner_n_into(void*, std::size_t, immer::detail::hamts::count_t) [with T = std::pair<int, int>; Hash = immer::map<int, int>::hash_key; Equal = immer::map<int, int>::equal_key; MemoryPolicy = immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>; unsigned int B = 5]',
    inlined from 'immer::detail::hamts::champ<std::pair<int, int>, immer::map<int, int>::hash_key, immer::map<int, int>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5>::empty()::<lambda()>' at /opt/local/var/macports/build/immer-4e303043/work/immer-df6ef46d97e1fe81f397015b9aeb32505cef653b/immer/detail/hamts/champ.hpp:147:45,
    inlined from 'static immer::detail::hamts::champ<T, Hash, Equal, MemoryPolicy, B>::node_t* immer::detail::hamts::champ<T, Hash, Equal, MemoryPolicy, B>::empty() [with T = std::pair<int, int>; Hash = immer::map<int, int>::hash_key; Equal = immer::map<int, int>::equal_key; MemoryPolicy = immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>; unsigned int B = 5]' at /opt/local/var/macports/build/immer-4e303043/work/immer-df6ef46d97e1fe81f397015b9aeb32505cef653b/immer/detail/hamts/champ.hpp:148:10:
/opt/local/var/macports/build/immer-4e303043/work/immer-df6ef46d97e1fe81f397015b9aeb32505cef653b/immer/detail/hamts/node.hpp:238:38: error: array subscript 'immer::detail::hamts::node<std::pair<int, int>, immer::map<int, int>::hash_key, immer::map<int, int>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap>, immer::refcount_policy, immer::spinlock_policy>, 5>[0]' is partly outside array bounds of 'std::aligned_storage_t<16, 16> [1]' {aka 'std::aligned_storage<16, 16>::type [1]'} [-Werror=array-bounds=]
  238 |         p->impl.d.data.inner.nodemap = 0;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~

Logs attached.

immer_0.8.1.txt
immer-df6ef46.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions