Mercurial > hg > octave-nkf
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]), |