浏览代码

math: fix uninitalised member value in arraynd<>.

legacy
Sam Hocevar 5 年前
父节点
当前提交
8f9b573da5
共有 1 个文件被更改,包括 8 次插入10 次删除
  1. +8
    -10
      src/lol/math/arraynd.h

+ 8
- 10
src/lol/math/arraynd.h 查看文件

@@ -102,22 +102,20 @@ public:
typedef array<T...> super; typedef array<T...> super;
typedef typename super::element_t element_t; typedef typename super::element_t element_t;


inline arraynd() inline arraynd() = default;
{
}


inline arraynd(vec_t<ptrdiff_t, N> sizes, element_t e = element_t()) inline arraynd(vec_t<ptrdiff_t, N> sizes, element_t e = element_t())
: m_sizes(sizes) : m_sizes(sizes)
{ {
fix_sizes(e); resize_data(e);
} }


/* Additional constructor if ptrdiff_t != int */ /* Additional constructor if ptrdiff_t != int */
template<typename T2 = int, typename T3 = typename std::enable_if<!std::is_same<ptrdiff_t, T2>::value, int>::type> template<typename T2 = int, typename T3 = typename std::enable_if<!std::is_same<ptrdiff_t, T2>::value, int>::type>
inline arraynd(vec_t<T2, N> sizes, element_t e = element_t()) inline arraynd(vec_t<T2, N> sizes, element_t e = element_t())
: m_sizes(vec_t<ptrdiff_t, N>(sizes))
{ {
m_sizes = vec_t<ptrdiff_t, N>(sizes); resize_data(e);
fix_sizes(e);
} }


inline arraynd(std::initializer_list<arraynd_initializer<element_t, N - 1> > initializer) inline arraynd(std::initializer_list<arraynd_initializer<element_t, N - 1> > initializer)
@@ -127,7 +125,7 @@ public:
for (auto inner_initializer : initializer) for (auto inner_initializer : initializer)
inner_initializer.fill_sizes(&m_sizes[N - 2]); inner_initializer.fill_sizes(&m_sizes[N - 2]);


fix_sizes(); resize_data();


int pos = 0; int pos = 0;


@@ -240,7 +238,7 @@ public:
inline void resize_s(vec_t<ptrdiff_t, N> sizes, element_t e = element_t()) inline void resize_s(vec_t<ptrdiff_t, N> sizes, element_t e = element_t())
{ {
m_sizes = sizes; m_sizes = sizes;
fix_sizes(e); resize_data(e);
} }


inline vec_t<int, N> size() const inline vec_t<int, N> size() const
@@ -262,7 +260,7 @@ public:
inline ptrdiff_t bytes_s() const { return super::bytes_s(); } inline ptrdiff_t bytes_s() const { return super::bytes_s(); }


private: private:
inline void fix_sizes(element_t e = element_t()) inline void resize_data(element_t e = element_t())
{ {
ptrdiff_t total_size = 1; ptrdiff_t total_size = 1;


@@ -274,7 +272,7 @@ private:
this->array<T...>::resize(total_size, e); this->array<T...>::resize(total_size, e);
} }


vec_t<ptrdiff_t, N> m_sizes; vec_t<ptrdiff_t, N> m_sizes { 0 };
}; };


template<typename... T> using array2d = arraynd<2, T...>; template<typename... T> using array2d = arraynd<2, T...>;


||||||
x
 
000:0
正在加载...
取消
保存