Mercurial > octave
diff liboctave/idx-vector.cc @ 9124:47f19c11b558
fix checking valid range subscripts
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 16 Apr 2009 08:06:38 +0200 |
parents | ac0a23e9f5c5 |
children | d9716e3ee0dd |
line wrap: on
line diff
--- a/liboctave/idx-vector.cc Thu Apr 16 07:02:31 2009 +0200 +++ b/liboctave/idx-vector.cc Thu Apr 16 08:06:38 2009 +0200 @@ -108,13 +108,6 @@ } } -static void -gripe_non_int_range (void) -{ - (*current_liboctave_error_handler) - ("If a range is used as subscript, all elements are expected to be integers."); -} - idx_vector::idx_range_rep::idx_range_rep (const Range& r) : start (0), len (r.nelem ()), step (1) { @@ -129,10 +122,15 @@ { start = static_cast<octave_idx_type> (r.base ()) - 1; step = static_cast<octave_idx_type> (r.inc ()); + if (start < 0 || (step < 0 && start + (len-1)*step < 0)) + { + gripe_invalid_index (); + err = true; + } } else { - gripe_non_int_range (); + gripe_invalid_index (); err = true; } }