# HG changeset patch # User jwe # Date 1067613105 0 # Node ID db5a24d54915e8674623d03e3c363b05f94a6e26 # Parent f99c430316cdeea360d2034f94918b08bacd5fd5 [project @ 2003-10-31 15:11:45 by jwe] diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,11 @@ 2003-10-31 John W. Eaton + * ov-cell.cc (octave_cell::subsref): When indexing with '{', quit + early if an error occurs in do_index_op. + + * ov.cc (octave_value::next_subsref): Don't do anything if + error_state is true. + * cutils.c (octave_usleep) [HAVE_SELECT]: Introduce new local scope for declaration of delay. [HAVE_POLL]: Likewise, for delay and pfd. diff --git a/src/ov-cell.cc b/src/ov-cell.cc --- a/src/ov-cell.cc +++ b/src/ov-cell.cc @@ -67,23 +67,26 @@ { octave_value tmp = do_index_op (idx.front ()); - Cell tcell = tmp.cell_value (); - - if (tcell.length () == 1) - retval = tcell(0,0); - else + if (! error_state) { - int nr = tcell.rows (); - int nc = tcell.columns (); - octave_value_list lst (nr * nc, octave_value ()); - int k = 0; - for (int j = 0; j < nc; j++) - for (int i = 0; i < nr; i++) - { - OCTAVE_QUIT; - lst(k++) = tcell(i,j); - } - retval = octave_value (lst, true); + Cell tcell = tmp.cell_value (); + + if (tcell.length () == 1) + retval = tcell(0,0); + else + { + int nr = tcell.rows (); + int nc = tcell.columns (); + octave_value_list lst (nr * nc, octave_value ()); + int k = 0; + for (int j = 0; j < nc; j++) + for (int i = 0; i < nr; i++) + { + OCTAVE_QUIT; + lst(k++) = tcell(i,j); + } + retval = octave_value (lst, true); + } } } break; diff --git a/src/ov.cc b/src/ov.cc --- a/src/ov.cc +++ b/src/ov.cc @@ -690,7 +690,7 @@ const std::list& idx, size_t skip) { - if (idx.size () > skip) + if (! error_state && idx.size () > skip) { std::list new_idx (idx); for (size_t i = 0; i < skip; i++)