comparison liboctave/array/Sparse.h @ 15724:911a6ad10e9c

fix incorrect sparse array allocation introduced in cda76da34693 * Sparse.h (Sparse<T>::SparseRep::SparseRep (octave_idx_type, octave_idx_type, octave_idx_type)): Don't allocate D or R arrays if NZ is 0. Initialize all elements of C to 0.
author John W. Eaton <jwe@octave.org>
date Mon, 03 Dec 2012 16:02:30 -0500
parents 648dabbb4c6b
children d63878346099
comparison
equal deleted inserted replaced
15723:77cf1c84db13 15724:911a6ad10e9c
85 for (octave_idx_type i = 0; i < n + 1; i++) 85 for (octave_idx_type i = 0; i < n + 1; i++)
86 c[i] = 0; 86 c[i] = 0;
87 } 87 }
88 88
89 SparseRep (octave_idx_type nr, octave_idx_type nc, octave_idx_type nz = 0) 89 SparseRep (octave_idx_type nr, octave_idx_type nc, octave_idx_type nz = 0)
90 : d (new T [nz]), r (new octave_idx_type [nz]), 90 : d (nz > 0 ? new T [nz] : 0),
91 r (nz > 0 ? new octave_idx_type [nz] : 0),
91 c (new octave_idx_type [nc+1]), nzmx (nz), nrows (nr), 92 c (new octave_idx_type [nc+1]), nzmx (nz), nrows (nr),
92 ncols (nc), count (1) 93 ncols (nc), count (1)
93 { 94 {
94 c[nc] = nz; 95 for (octave_idx_type i = 0; i < nc + 1; i++)
95 for (octave_idx_type i = 0; i < nc; i++)
96 c[i] = 0; 96 c[i] = 0;
97 } 97 }
98 98
99 SparseRep (const SparseRep& a) 99 SparseRep (const SparseRep& a)
100 : d (new T [a.nzmx]), r (new octave_idx_type [a.nzmx]), 100 : d (new T [a.nzmx]), r (new octave_idx_type [a.nzmx]),