Mercurial > octave
changeset 32552:3d9e866f9ae2
avoid constructing matrix that won't be used
* ov-base-mat.cc (octave_base_matrix<MT>::assign): Only create RHS matrix
object if it will be used.
author | Petter .T <petter.vilhelm@gmail.com> |
---|---|
date | Thu, 30 Nov 2023 23:07:51 +0100 |
parents | cbc71d7652e8 |
children | 5dea9272ad7f |
files | libinterp/octave-value/ov-base-mat.cc |
diffstat | 1 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-base-mat.cc Fri Dec 08 09:12:23 2023 -0500 +++ b/libinterp/octave-value/ov-base-mat.cc Thu Nov 30 23:07:51 2023 +0100 @@ -324,8 +324,6 @@ int nd = m_matrix.ndims (); - MT mrhs (dim_vector (1, 1), rhs); - // If we catch an indexing error in index_vector, we flag an error in // index k. Ensure it is the right value before each idx_vector call. // Same variable as used in the for loop in the default case. @@ -348,7 +346,10 @@ if (i.is_scalar () && i(0) < m_matrix.numel ()) m_matrix(i(0)) = rhs; else - m_matrix.assign (i, mrhs); + { + MT mrhs (dim_vector (1, 1), rhs); + m_matrix.assign (i, mrhs); + } } break; @@ -364,7 +365,10 @@ && i(0) < m_matrix.rows () && j(0) < m_matrix.columns ()) m_matrix(i(0), j(0)) = rhs; else - m_matrix.assign (i, j, mrhs); + { + MT mrhs (dim_vector (1, 1), rhs); + m_matrix.assign (i, j, mrhs); + } } break; @@ -396,7 +400,10 @@ m_matrix(j) = rhs; } else - m_matrix.assign (idx_vec, mrhs); + { + MT mrhs (dim_vector (1, 1), rhs); + m_matrix.assign (idx_vec, mrhs); + } } break; }