diff --git a/include/armadillo_bits/arrayops_meat.hpp b/include/armadillo_bits/arrayops_meat.hpp index 7a025d46..bf34111d 100644 --- a/include/armadillo_bits/arrayops_meat.hpp +++ b/include/armadillo_bits/arrayops_meat.hpp @@ -25,21 +25,24 @@ arma_inline void arrayops::copy(eT* dest, const eT* src, const uword n_elem) { - if(is_cx::no) + if(dest != src) { - if(n_elem <= 9) + if(is_cx::no) { - arrayops::copy_small(dest, src, n_elem); + if(n_elem <= 9) + { + arrayops::copy_small(dest, src, n_elem); + } + else + { + std::memcpy(dest, src, n_elem*sizeof(eT)); + } } else { - std::memcpy(dest, src, n_elem*sizeof(eT)); + if(n_elem > 0) { std::memcpy(dest, src, n_elem*sizeof(eT)); } } } - else - { - if(n_elem > 0) { std::memcpy(dest, src, n_elem*sizeof(eT)); } - } }