changeset 27328:0cf70e494a3f

maint: merge stable to default.
author Rik <rik@octave.org>
date Mon, 05 Aug 2019 17:16:27 -0700
parents cb92168e48f6 (current diff) 1582a6140275 (diff)
children 983dab0902f7
files libinterp/corefcn/data.cc
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/data.cc	Mon Aug 05 12:41:23 2019 -0500
+++ b/libinterp/corefcn/data.cc	Mon Aug 05 17:16:27 2019 -0700
@@ -1283,6 +1283,7 @@
 %!assert (diag (1, 2, 3), [1,0,0; 0,0,0])
 %!assert (diag ({1}, 2, 3), {1,[],[]; [],[],[]})
 %!assert (diag ({1,2}, 3, 4), {1,[],[],[]; [],2,[],[]; [],[],[],[]})
+%!assert <*56711> (diag ({1,2,3}, 2, 1), {1; []})
 
 ## Test out-of-range diagonals
 %!assert (diag (ones (3,3), 4), zeros (0, 1))
--- a/liboctave/array/Array.cc	Mon Aug 05 12:41:23 2019 -0500
+++ b/liboctave/array/Array.cc	Mon Aug 05 17:16:27 2019 -0700
@@ -2617,7 +2617,8 @@
 
   Array<T> retval (dim_vector (m, n), resize_fill_value ());
 
-  for (octave_idx_type i = 0; i < numel (); i++)
+  octave_idx_type nel = std::min (numel (), std::min (m, n));
+  for (octave_idx_type i = 0; i < nel; i++)
     retval.xelem (i, i) = xelem (i);
 
   return retval;