diff --git a/include/armadillo_bits/glue_kron_meat.hpp b/include/armadillo_bits/glue_kron_meat.hpp index f12aa53d..c7c4ff63 100644 --- a/include/armadillo_bits/glue_kron_meat.hpp +++ b/include/armadillo_bits/glue_kron_meat.hpp @@ -125,24 +125,21 @@ glue_kron::apply(Mat& out, const Glue& typedef typename T1::elem_type eT; - const unwrap A_tmp(X.A); - const unwrap B_tmp(X.B); + const quasi_unwrap UA(X.A); + const quasi_unwrap UB(X.B); - const Mat& A = A_tmp.M; - const Mat& B = B_tmp.M; - - if( (&out != &A) && (&out != &B) ) - { - glue_kron::direct_kron(out, A, B); - } - else + if(UA.is_alias(out) || UB.is_alias(out)) { Mat tmp; - glue_kron::direct_kron(tmp, A, B); + glue_kron::direct_kron(tmp, UA.M, UB.M); out.steal_mem(tmp); } + else + { + glue_kron::direct_kron(out, UA.M, UB.M); + } }