# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1361396222 18000 # Node ID 1c8234f0b6421404336a6ad0af20a23f131176a2 # Parent ac672925fc9822ff44d0ac5cb98431eadb0bdf97 Fix bounds-checking in diagonal matrices (bug #38357) * ov-base-diag.cc (octave_base_diag::do_index_op): Call checkelem instead of elem in the (scalar, scalar) indexing case. * index.tst: Add tests. diff -r ac672925fc98 -r 1c8234f0b642 libinterp/octave-value/ov-base-diag.cc --- a/libinterp/octave-value/ov-base-diag.cc Wed Feb 20 11:36:36 2013 -0500 +++ b/libinterp/octave-value/ov-base-diag.cc Wed Feb 20 16:37:02 2013 -0500 @@ -109,7 +109,7 @@ if (idx0.is_scalar () && idx1.is_scalar ()) { - retval = matrix.elem (idx0(0), idx1(0)); + retval = matrix.checkelem (idx0(0), idx1(0)); } else { diff -r ac672925fc98 -r 1c8234f0b642 test/index.tst --- a/test/index.tst Wed Feb 20 11:36:36 2013 -0500 +++ b/test/index.tst Wed Feb 20 16:37:02 2013 -0500 @@ -210,3 +210,20 @@ %!error x(i) %!error x(j) %!error x(1+i) + +## bug #38357 +%!shared d, dd +%! d = diag ([1, 2, 3]); +%! dd = diag ([1, 2, 3], 6, 3); +%!assert (d(1), 1); +%!assert (dd(1), 1); +%!assert (d(3, 3), 3); +%!assert (dd(3, 3), 3); +%!assert (d(2), 0); +%!assert (dd(2), 0); +%!assert (dd(6,1), 0); +%!error d(6,6); +%!error dd(6,6); +%!error d(3,6); +%!error dd(3,6); +