diff liboctave/Array.cc @ 12550:ea3a4bf39048

Treat empty vector (1x0 or 0x1) as valid input to diag(). Bug #32901
author Rik <octave@nomad.inbox5.com>
date Tue, 29 Mar 2011 17:47:26 -0700
parents e0e50f48df37
children 73e75ff9c31b
line wrap: on
line diff
--- 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)