# HG changeset patch # User jwe # Date 816273430 0 # Node ID 8f798f9638056d472e68cbdf889b961d93518c45 # Parent 90bbeec37a0e6bc307aebbb21d9fc6282af25b4f [project @ 1995-11-13 14:37:05 by jwe] diff --git a/liboctave/CDiagMatrix.cc b/liboctave/CDiagMatrix.cc --- a/liboctave/CDiagMatrix.cc +++ b/liboctave/CDiagMatrix.cc @@ -404,7 +404,7 @@ retval.elem (i, i) = 1.0 / elem (i, i); } - return *this; + return retval; } // diagonal matrix by diagonal matrix -> diagonal matrix operations diff --git a/liboctave/dDiagMatrix.cc b/liboctave/dDiagMatrix.cc --- a/liboctave/dDiagMatrix.cc +++ b/liboctave/dDiagMatrix.cc @@ -286,23 +286,21 @@ return DiagMatrix (); } + DiagMatrix retval (nr, nc); + info = 0; - double *tmp_data = dup (data (), len); for (int i = 0; i < len; i++) { if (elem (i, i) == 0.0) { info = -1; - copy (tmp_data, data (), len); // Restore contents. - break; + return *this; } else - { - tmp_data[i] = 1.0 / elem (i, i); - } + retval.elem (i, i) = 1.0 / elem (i, i); } - return DiagMatrix (tmp_data, nr, nc); + return retval; } // diagonal matrix by diagonal matrix -> diagonal matrix operations