diff liboctave/Array.cc @ 4756:60c78bde10e5

[project @ 2004-02-13 21:58:01 by jwe]
author jwe
date Fri, 13 Feb 2004 21:58:01 +0000
parents 9a6bfff40c8d
children c48180a45d34
line wrap: on
line diff
--- a/liboctave/Array.cc
+++ b/liboctave/Array.cc
@@ -1165,10 +1165,19 @@
     n = nr;
   else
     {
-      (*current_liboctave_error_handler)
-	("A(idx) = []: expecting A to be row or column vector or scalar");
-
-      return;
+      // Reshape to row vector for Matlab compatibility.
+
+      n = nr * nc;
+      nr = 1;
+      nc = n;
+
+      if (liboctave_wfi_flag)
+	{
+	  (*current_liboctave_warning_handler)
+	    ("A(idx) = []: expecting A to be row or column vector or scalar");
+
+	  return;
+	}
     }
 
   if (idx_arg.is_colon_equiv (n, 1))
@@ -1214,10 +1223,7 @@
 		iidx++;
 	      else
 		{
-		  if (nr == 1)
-		    new_data[ii] = elem (0, i);
-		  else
-		    new_data[ii] = elem (i, 0);
+		  new_data[ii] = elem (i);
 
 		  ii++;
 		}
@@ -2629,7 +2635,9 @@
 
 	  if (idx_i)
 	    {
-	      if (len == 0)
+	      if (rhs_nr == 0 && rhs_nc == 0)
+		lhs.maybe_delete_elements (idx_i);
+	      else if (len == 0)
 		{
 		  if (! ((rhs_nr == 1 && rhs_nc == 1)
 			 || (rhs_nr == 0 && rhs_nc == 0)))