Mercurial > hg > octave-lojdl
changeset 1274:305162358727
[project @ 1995-04-21 19:38:45 by jwe]
author | jwe |
---|---|
date | Fri, 21 Apr 1995 19:38:45 +0000 |
parents | fd3ed8834b77 |
children | d607adf5af66 |
files | src/tc-rep-ass.cc |
diffstat | 1 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/tc-rep-ass.cc +++ b/src/tc-rep-ass.cc @@ -620,8 +620,7 @@ int nr = rows (); int nc = columns (); - assert ((nr == 1 || nc == 1 || (nr == 0 && nc == 0)) - && ! user_pref.do_fortran_indexing); + assert ((nr <= 1 || nc <= 1) && ! user_pref.do_fortran_indexing); tree_constant tmp_i = i_arg.make_numeric_or_range_or_magic (); @@ -773,13 +772,17 @@ int len = MAX (nr, nc); - if (i < 0 || i >= len) + if (i < 0 || i >= len || (nr == 0 && nc == 0)) { ::error ("A(int) = []: index out of range"); return; } - if (nr == 1) + if (nr == 0 && nc > 0) + resize (0, nc - 1); + else if (nc == 0 && nr > 0) + resize (nr - 1, 0); + else if (nr == 1) delete_column (i); else if (nc == 1) delete_row (i); @@ -2177,6 +2180,9 @@ iv.sort_uniq (); int num_to_delete = iv.length (); + if (num_to_delete == 0) + return; + int nr = rows (); int nc = columns (); @@ -2238,6 +2244,9 @@ ri.sort (); int num_to_delete = ri.nelem (); + if (num_to_delete == 0) + return; + int nr = rows (); int nc = columns (); @@ -2353,6 +2362,9 @@ jv.sort_uniq (); int num_to_delete = jv.length (); + if (num_to_delete == 0) + return; + int nr = rows (); int nc = columns (); @@ -2414,6 +2426,9 @@ rj.sort (); int num_to_delete = rj.nelem (); + if (num_to_delete == 0) + return; + int nr = rows (); int nc = columns ();