# HG changeset patch # User Rik # Date 1301446046 25200 # Node ID ea3a4bf39048fa51dba7e7766814e52930b13cec # Parent 570193964185b2d4454cb634a48da90a255a126c Treat empty vector (1x0 or 0x1) as valid input to diag(). Bug #32901 diff -r 570193964185 -r ea3a4bf39048 liboctave/Array.cc --- a/liboctave/Array.cc Tue Mar 29 19:00:26 2011 -0400 +++ b/liboctave/Array.cc Tue Mar 29 17:47:26 2011 -0700 @@ -2447,10 +2447,11 @@ octave_idx_type nnr = dv (0); octave_idx_type nnc = dv (1); - if (nnr == 0 || nnc == 0) - ; // do nothing + if (nnr == 0 && nnc == 0) + ; // do nothing for empty matrix else if (nnr != 1 && nnc != 1) { + // Extract diag from matrix if (k > 0) nnc -= k; else if (k < 0) @@ -2482,8 +2483,9 @@ (*current_liboctave_error_handler) ("diag: requested diagonal out of range"); } - else if (nnr != 0 && nnc != 0) + else { + // Create diag matrix from vector octave_idx_type roff = 0; octave_idx_type coff = 0; if (k > 0) diff -r 570193964185 -r ea3a4bf39048 liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Mar 29 19:00:26 2011 -0400 +++ b/liboctave/ChangeLog Tue Mar 29 17:47:26 2011 -0700 @@ -1,3 +1,8 @@ +2011-03-29 Rik + + * Array.cc (diag): Treat empty vector (1x0 or 0x1) as valid input. + Improves Matlab compatibility (bug #32901). + 2011-02-13 David Bateman * Sparse-perm-op-defs.h (template