Hi,<br><br>Sorry to bring this up right before the branch, but I have a bugfix for vtkPointSet I'd like to squeeze in.  If I don't hear any objections I'll commit it, 100% tests pass after the patch.  Here is the bug demonstrated in python:<br>
<br>from vtk import *<br><br>p1 = vtkPolyData()<br>p2 = vtkPolyData()<br>s = vtkSphereSource()<br>s.Update()<br><br>p1.DeepCopy(s.GetOutput())<br>print p1.GetNumberOfPoints()<br><br>p1.DeepCopy(p2)<br>print p1.GetNumberOfPoints()<br>
<br><br>this prints:<br>50<br>50<br><br>but I claim it should print:<br>50<br>0<br><br>Attached is my patch.  Below is the current implementation of vtkPointSet::DeepCopy and after that my new version.  The bug is that 'this->Points->DeepCopy' becomes a no-op when the pointset-to-copy has null vtkPoints.<br>
<br>//----------------------------------------------------------------------------<br>void vtkPointSet::DeepCopy(vtkDataObject *dataObject)<br>{<br>  vtkPointSet *pointSet = vtkPointSet::SafeDownCast(dataObject);<br><br>  if ( pointSet != NULL )<br>
    {<br>    if (this->Points == NULL)<br>      {<br>      if ( pointSet->GetPoints() != NULL )<br>        {<br>        this->Points = pointSet->GetPoints()->NewInstance();<br>        this->Points->SetDataType(pointSet->GetPoints()->GetDataType());<br>
        this->Points->Register(this);<br>        this->Points->Delete();<br>        }<br>      else<br>        {<br>        this->Points = vtkPoints::New();<br>        this->Points->Register(this);<br>
        this->Points->Delete();<br>        }<br>      }<br>    this->Points->DeepCopy(pointSet->GetPoints());<br>    }<br><br>  // Do superclass<br>  this->vtkDataSet::DeepCopy(dataObject);<br>}<br><br>//----------------------------------------------------------------------------<br>
void vtkPointSet::DeepCopy(vtkDataObject *dataObject)<br>{<br>  vtkPointSet *pointSet = vtkPointSet::SafeDownCast(dataObject);<br><br>  if ( pointSet != NULL )<br>    {<br>    vtkPoints* newPoints;<br>    vtkPoints* pointsToCopy = pointSet->GetPoints();<br>
    if (pointsToCopy)<br>      {<br>      newPoints = pointsToCopy->NewInstance();<br>      newPoints->SetDataType(pointsToCopy->GetDataType());<br>      newPoints->DeepCopy(pointsToCopy);<br>      }<br>    else<br>
      {<br>      newPoints = vtkPoints::New();<br>      }<br>    this->SetPoints(newPoints);<br>    newPoints->Delete();<br>    }<br><br>  // Do superclass<br>  this->vtkDataSet::DeepCopy(dataObject);<br>}<br><br>
<br>Pat<br><br><br><br><br>