diff liboctave/dim-vector.h @ 6216:74ca56e4414c

[project @ 2006-12-22 17:45:47 by jwe]
author jwe
date Fri, 22 Dec 2006 17:45:47 +0000
parents 7ba9ad1fec11
children 93c65f2a5668
line wrap: on
line diff
--- a/liboctave/dim-vector.h
+++ b/liboctave/dim-vector.h
@@ -28,6 +28,7 @@
 #include <sstream>
 #include <string>
 
+#include "lo-error.h"
 #include "oct-types.h"
 
 class
@@ -43,14 +44,23 @@
     int ndims;
     int count;
 
-    dim_vector_rep (void) : dims (0), ndims (0), count (1) { }
+    dim_vector_rep (void)
+      : dims (new octave_idx_type [2]), ndims (2), count (1)
+    {
+      dims[0] = 0;
+      dims[1] = 0;
+    }
 
-    dim_vector_rep (octave_idx_type n) : dims (new octave_idx_type [1]), ndims (1), count (1)
+
+    dim_vector_rep (octave_idx_type n)
+      : dims (new octave_idx_type [2]), ndims (2), count (1)
     {
       dims[0] = n;
+      dims[1] = 1;
     }
 
-    dim_vector_rep (octave_idx_type r, octave_idx_type c) : dims (new octave_idx_type [2]), ndims (2), count (1)
+    dim_vector_rep (octave_idx_type r, octave_idx_type c)
+      : dims (new octave_idx_type [2]), ndims (2), count (1)
     {
       dims[0] = r;
       dims[1] = c;
@@ -75,7 +85,8 @@
 	}
     }
 
-    dim_vector_rep (octave_idx_type n, const dim_vector_rep *dv, int fill_value = 0)
+    dim_vector_rep (octave_idx_type n, const dim_vector_rep *dv,
+		    int fill_value = 0)
       : dims ((dv && n > 0) ? new octave_idx_type [n] : 0),
 	ndims (n > 0 ? n : 0), count (1)
     {
@@ -200,6 +211,13 @@
 
     if (n != len)
       {
+	if (n < 2)
+	  {
+	    (*current_liboctave_error_handler)
+	      ("unable to resize object to fewer than 2 dimensions");
+	    return;
+	  }
+
 	dim_vector_rep *old_rep = rep;
 
 	rep = new dim_vector_rep (n, old_rep, fill_value);