# HG changeset patch # User dbateman # Date 1151782927 0 # Node ID 565d0cd4d9d04f69e288eb1d9006036792f9fbca # Parent f6ddc0ee23154ebebcc1875bdd05a04f6993426f [project @ 2006-07-01 19:42:06 by dbateman] diff --git a/liboctave/CSparse.cc b/liboctave/CSparse.cc --- a/liboctave/CSparse.cc +++ b/liboctave/CSparse.cc @@ -750,6 +750,14 @@ octave_idx_type colXp = retval.xcidx(i); octave_idx_type colUp = cidx(j); octave_idx_type rpX, rpU; + + if (cidx(j) == cidx(j+1)) + { + (*current_liboctave_error_handler) + ("division by zero"); + goto inverse_singular; + } + do { OCTAVE_QUIT; @@ -769,12 +777,19 @@ } while ((rpX + + * dSparse.cc (tinverse): Check for rows with no elements and zero + elements on the diagonal. Allow both Upper and Lower triangular + matrices to be treated. + * CSparse.cc (tinverse): ditto. + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): Take into account 64-bit + constant assignment. + 2006-06-30 John W. Eaton * lo-sysdep.cc (octave_chdir): Perform tilde expansion here. diff --git a/liboctave/Sparse-op-defs.h b/liboctave/Sparse-op-defs.h --- a/liboctave/Sparse-op-defs.h +++ b/liboctave/Sparse-op-defs.h @@ -1548,7 +1548,7 @@ else \ { \ OCTAVE_LOCAL_BUFFER (octave_idx_type, w, nr); \ - RET_TYPE retval (nr, a_nc, 0); \ + RET_TYPE retval (nr, a_nc, static_cast (0)); \ for (octave_idx_type i = 0; i < nr; i++) \ w[i] = 0; \ retval.xcidx(0) = 0; \ diff --git a/liboctave/dSparse.cc b/liboctave/dSparse.cc --- a/liboctave/dSparse.cc +++ b/liboctave/dSparse.cc @@ -827,6 +827,14 @@ octave_idx_type colXp = retval.xcidx(i); octave_idx_type colUp = cidx(j); octave_idx_type rpX, rpU; + + if (cidx(j) == cidx(j+1)) + { + (*current_liboctave_error_handler) + ("division by zero"); + goto inverse_singular; + } + do { OCTAVE_QUIT; @@ -847,11 +855,17 @@ (colXp