Changeset |
BUG: Fix memory initialization in vtkMRMLDiffusionWeightedVolumeNode
This commits fixes a problem discovered while running the test
vtkMRMLDiffusionWeightedVolumeNodeTest1 through valgrind. It
ensures that each time the number of gradient is set, the DiffusionGradients
and BValues double arrays are initialized with zeros. To do so,
a protected function "SetNumberOfGradientsInternal" is introduced, it is
doesn't invoke the modified event, set the double array value to zeros.
The redundant ivar "NumberOfGradients" has also been removed. Instead
the function "GetNumberOfGradients" return the number of tuples in
the DiffusionGradients array.
[...]
Conditional jump or move depends on uninitialised value(s)
==32492== at 0x23B631D3: __printf_fp (printf_fp.c:404)
==32492== by 0x23B62A9B: vfprintf (vfprintf.c:1654)
==32492== by 0x23B875A4: vsnprintf (vsnprintf.c:119)
==32492== by 0x2367E01F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18)
==32492== by 0x23684455: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, double) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18)
==32492== by 0x2368473F: std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18)
==32492== by 0x2368FA34: std::ostream& std::ostream::_M_insert<double>(double) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18)
==32492== by 0x5143A38: vtkMRMLDiffusionWeightedVolumeNode::PrintSelf(std::ostream&, vtkIndent) (vtkMRMLDiffusionWeightedVolumeNode.cxx:394)
==32492== by 0x17BF4BD7: vtkObjectBase::Print(std::ostream&) (vtkObjectBase.cxx:149)
==32492== by 0x4B78B4: vtkMRMLDiffusionWeightedVolumeNodeTest1(int, char**) (vtkMRMLDiffusionWeightedVolumeNodeTest1.cxx:24)
==32492== by 0x4729AC: main (MRMLCoreCxxTests.cxx:616)
[...]
git-svn-id: http://svn.slicer.org/Slicer4/trunk@23457 3bd1e089-480b-0410-8dfb-8563597acbee |