diff liboctave/Array2-idx.h @ 4323:0990c9b77109

[project @ 2003-02-14 07:36:26 by jwe]
author jwe
date Fri, 14 Feb 2003 07:36:27 +0000
parents 0b24abe1ba0b
children 0a59e4de215e
line wrap: on
line diff
--- a/liboctave/Array2-idx.h	Fri Feb 14 01:58:12 2003 +0000
+++ b/liboctave/Array2-idx.h	Fri Feb 14 07:36:27 2003 +0000
@@ -43,7 +43,7 @@
     }
   else if (n_idx == 1)
     {
-      return index (idx[0]);
+      return index (Array<T>::idx[0]);
     }
   else
     (*current_liboctave_error_handler)
@@ -98,7 +98,14 @@
       int len = tmp.length ();
 
       if (len == 0)
-	retval = Array2<T> (idx_orig_rows, idx_orig_columns);
+	{
+	  if (idx_orig_rows == 0 || idx_orig_columns == 0)
+	    retval = Array2<T> (idx_orig_rows, idx_orig_columns);
+	  else if (nr == 1)
+	    retval = Array2<T> (1, 0);
+	  else
+	    retval = Array2<T> (0, 1);
+	}
       else
 	{
 	  if (idx_orig_rows == 1 || idx_orig_columns == 1)
@@ -283,10 +290,10 @@
 		}
 	    }
 
-	  if (--rep->count <= 0)
-	    delete rep;
+	  if (--(Array<T>::rep)->count <= 0)
+	    delete Array<T>::rep;
 
-	  rep = new typename Array<T>::ArrayRep (new_data, new_n);
+	  Array<T>::rep = new typename Array<T>::ArrayRep (new_data, new_n);
 
 	  if (nr == 1)
 	    {
@@ -397,10 +404,10 @@
 			    }
 			}
 
-		      if (--rep->count <= 0)
-			delete rep;
+		      if (--(Array<T>::rep)->count <= 0)
+			delete Array<T>::rep;
 
-		      rep = new typename Array<T>::ArrayRep (new_data, nr * new_nc);
+		      Array<T>::rep = new typename Array<T>::ArrayRep (new_data, nr * new_nc);
 
 		      d2 = new_nc;
 
@@ -461,10 +468,10 @@
 			    }
 			}
 
-		      if (--rep->count <= 0)
-			delete rep;
+		      if (--(Array<T>::rep)->count <= 0)
+			delete Array<T>::rep;
 
-		      rep = new typename Array<T>::ArrayRep (new_data, new_nr * nc);
+		      Array<T>::rep = new typename Array<T>::ArrayRep (new_data, new_nr * nc);
 
 		      d1 = new_nr;