Mercurial > octave-nkf
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;