# HG changeset patch # User jwe # Date 755335853 0 # Node ID c9894e8d5f04bd1ac8b83631b51add528b0c49e6 # Parent e208bd9ade3678154b82838c25953fa27d6f401b [project @ 1993-12-08 07:30:53 by jwe] diff -r e208bd9ade36 -r c9894e8d5f04 liboctave/Array.cc --- a/liboctave/Array.cc Mon Dec 06 22:01:37 1993 +0000 +++ b/liboctave/Array.cc Wed Dec 08 07:30:53 1993 +0000 @@ -192,7 +192,7 @@ if (n < 0 || n >= rep->length ()) { (*current_liboctave_error_handler) ("range error"); - static T foo (0); + static T foo; return foo; } return elem (n); @@ -226,7 +226,8 @@ if (n < 0 || n >= rep->length ()) { (*current_liboctave_error_handler) ("range error"); - return T (0); + T foo; + return foo; } return elem (n); } @@ -430,14 +431,26 @@ T& Array2::checkelem (int i, int j) { - return Array::checkelem (d1*j+i); + if (i < 0 || j < 0 || i >= d1 || j >= d2) + { + (*current_liboctave_error_handler) ("range error"); + static T foo; + return foo; + } + return Array::elem (d1*j+i); } template T& Array2::operator () (int i, int j) { - return Array::checkelem (d1*j+i); + if (i < 0 || j < 0 || i >= d1 || j >= d2) + { + (*current_liboctave_error_handler) ("range error"); + static T foo; + return foo; + } + return Array::elem (d1*j+i); } template @@ -458,14 +471,26 @@ T Array2::checkelem (int i, int j) const { - return Array::checkelem (d1*j+i); + if (i < 0 || j < 0 || i >= d1 || j >= d2) + { + (*current_liboctave_error_handler) ("range error"); + T foo; + return foo; + } + return Array::elem (d1*j+i); } template T Array2::operator () (int i, int j) const { - return Array::checkelem (d1*j+i); + if (i < 0 || j < 0 || i >= d1 || j >= d2) + { + (*current_liboctave_error_handler) ("range error"); + T foo; + return foo; + } + return Array::elem (d1*j+i); } template @@ -626,14 +651,26 @@ T& Array3::checkelem (int i, int j, int k) { - return Array2::checkelem (i, d1*k+j); + if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3) + { + (*current_liboctave_error_handler) ("range error"); + static T foo; + return foo; + } + return Array2::elem (i, d1*k+j); } template T& Array3::operator () (int i, int j, int k) { - return Array2::checkelem (i, d2*k+j); + if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3) + { + (*current_liboctave_error_handler) ("range error"); + static T foo; + return foo; + } + return Array2::elem (i, d2*k+j); } template @@ -654,14 +691,26 @@ T Array3::checkelem (int i, int j, int k) const { - return Array2::checkelem (i, d1*k+j); + if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3) + { + (*current_liboctave_error_handler) ("range error"); + T foo; + return foo; + } + return Array2::elem (i, d1*k+j); } template T Array3::operator () (int i, int j, int k) const { - return Array2::checkelem (i, d2*k+j); + if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3) + { + (*current_liboctave_error_handler) ("range error"); + T foo; + return foo; + } + return Array2::elem (i, d2*k+j); } template @@ -795,7 +844,12 @@ DiagArray::checkelem (int r, int c) { static T foo (0); - return (r == c) ? Array::checkelem (r) : foo; + if (r < 0 || c < 0 || r >= nr || c >= nc) + { + (*current_liboctave_error_handler) ("range error"); + return foo; + } + return (r == c) ? Array::elem (r) : foo; } template @@ -803,7 +857,12 @@ DiagArray::operator () (int r, int c) { static T foo (0); - return (r == c) ? Array::operator () (r) : foo; + if (r < 0 || c < 0 || r >= nr || c >= nc) + { + (*current_liboctave_error_handler) ("range error"); + return foo; + } + return (r == c) ? Array::elem (r) : foo; } template @@ -825,14 +884,26 @@ T DiagArray::checkelem (int r, int c) const { - return (r == c) ? Array::checkelem (r) : T (0); + if (r < 0 || c < 0 || r >= nr || c >= nc) + { + (*current_liboctave_error_handler) ("range error"); + T foo; + return foo; + } + return (r == c) ? Array::elem (r) : T (0); } template T DiagArray::operator () (int r, int c) const { - return (r == c) ? Array::operator () (r) : T (0); + if (r < 0 || c < 0 || r >= nr || c >= nc) + { + (*current_liboctave_error_handler) ("range error"); + T foo; + return foo; + } + return (r == c) ? Array::elem (r) : T (0); } template