# HG changeset patch # User jwe # Date 847388460 0 # Node ID 1fa325961eeaf5c516305070eb153537678b96cb # Parent 3d905d3820a4e7de028c1a954a938bd43b1a883e [project @ 1996-11-07 17:41:00 by jwe] diff --git a/liboctave/Array3.cc b/liboctave/Array3.cc --- a/liboctave/Array3.cc +++ b/liboctave/Array3.cc @@ -90,7 +90,7 @@ template void -Array3::resize (int n, int m, int k, const T& val) +Array3::resize (int r, int c, int p, const T& val) { if (r < 0 || c < 0 || p < 0) { @@ -108,6 +108,7 @@ int old_d1 = dim1 (); int old_d2 = dim2 (); int old_d3 = dim3 (); + int old_len = length (); rep = new ArrayRep (r*c*p); @@ -116,17 +117,15 @@ d2 = c; d3 = p; - if (old_data && old_len > 0) - { - int min_r = old_d1 < r ? old_d1 : r; - int min_c = old_d2 < c ? old_d2 : c; - int min_p = old_d3 < p ? old_d3 : p; + int min_r = old_d1 < r ? old_d1 : r; + int min_c = old_d2 < c ? old_d2 : c; + int min_p = old_d3 < p ? old_d3 : p; - for (int k = 0; k < min_p; k++) - for (int j = 0; j < min_c; j++) - for (int i = 0; i < min_r; i++) - xelem (i, j, k) = old_data[old_d1*(old_d2*k+j)+i]; - } + if (old_data && old_len > 0) + for (int k = 0; k < min_p; k++) + for (int j = 0; j < min_c; j++) + for (int i = 0; i < min_r; i++) + xelem (i, j, k) = old_data[old_d1*(old_d2*k+j)+i]; // If the copy constructor is expensive, this may win. Otherwise, // it may make more sense to just copy the value everywhere when