[vtk-developers] More (fundamental) nastiness in vtkImageMultipleInputFilter
Charl P. Botha
c.p.botha at ewi.tudelft.nl
Mon Mar 15 18:18:54 EST 2004
Dear developers,
When vtkImageMultipleInputFilter calls ThreadedExecute, it's called with
"this->GetInputs()" as one of its parameters, the idea being that the
child class will know how many inputs to use.
The fundamental problem with this is that the Inputs array is only valid
for an index < GetNumberOfInputs(), but that the child's implementation
of ThreadedExecute has no access to this call. NumberOfInputs starts at
0 and grows as new inputs are added.
To see this go wrong, instantiate for example a vtkImageMathematics, set
its first input and then call its Update() method. Watch your
application segfault.
This is because this class's ThreadedExecute() checks for
this->Inputs[1], which is past the end of the Inputs array! It finds
_some_ value and subsequently tries to dereference it. BOOM.
My suggestion for a fix (workaround?) is that authors of
vtkImageMultipleInputFilter child classes call SetNthInput(NULL) for as
many inputs as they maximally are going to check for in ThreadedExecute.
Alternatively (and this is far more invasive), NumberOfInputs should
be passed to the ThreadedExecute method.
Any other ideas?
Regards,
Charl
--
charl p. botha http://cpbotha.net/ http://visualisation.tudelft.nl/
More information about the vtk-developers
mailing list