MantisBT - VTK | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0013819 | VTK | (No Category) | public | 2013-01-23 23:58 | 2014-10-03 04:50 |
Reporter | Trevor | ||||
Assigned To | Joachim Pouderoux | ||||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | OS | OS Version | |||
Product Version | 5.10.1 | ||||
Target Version | 6.2.0 | Fixed in Version | |||
Project | TBD | ||||
Type | incorrect functionality | ||||
Summary | 0013819: vtkHyperOctree->DeepCopy() provides shallow copy. | ||||
Description | As reported on vtkUsers mailing list: http://www.vtk.org/pipermail/vtkusers/2013-January/127166.html [^] The DeepCopy() method of vtkHyperOctree actually provides a shallow copy. | ||||
Steps To Reproduce | This can be seen in the following example: /** @file File exhibiting possible error in VTK @author Trevor Irons @date 01/15/2013 @version 0.0 **/ #include <iostream> #include "vtkHyperOctree.h" #include "vtkHyperOctreeCursor.h" #include "vtkDoubleArray.h" #include "vtkDataSetAttributes.h" using namespace std; int main() { vtkHyperOctree* Octree1 = vtkHyperOctree::New(); Octree1->SetDimension(3); Octree1->SetOrigin(0,0,0); cout << "Octree1 GetNum Leaves "<< Octree1->GetNumberOfLeaves() << std::endl; vtkHyperOctree* Octree2 = vtkHyperOctree::New(); Octree1->SetDimension(3); Octree1->SetOrigin(0,0,0); cout << "Octree2 Num Leaves " << Octree2->GetNumberOfLeaves() << std::endl; // Now modify one of them vtkHyperOctreeCursor* Cursor = Octree1->NewCellCursor(); Cursor->ToRoot(); Octree1->SubdivideLeaf(Cursor); // set some leaf data vtkDoubleArray *leafData = vtkDoubleArray::New(); for (int i=0; i<8; ++i) { leafData->InsertNextTuple1(i); } leafData->SetName("da leaf data"); Octree1->GetLeafData()->SetScalars( leafData ); // copy Octree2->DeepCopy(Octree1); cout << "After Subdivide Octree1 GetNum Leaves = " << Octree1->GetNumberOfLeaves() << std::endl; cout << "Octree2 Num Leaves (expect changed) = " << Octree2->GetNumberOfLeaves() << std::endl; // Leaf Data cout << Octree1->GetLeafData()->GetScalars() << std::endl; cout << Octree2->GetLeafData()->GetScalars() << std::endl; for (int i=0; i<8; ++i) { cout << Octree1->GetLeafData()->GetScalars()->GetTuple1(i) << std::endl; cout << Octree2->GetLeafData()->GetScalars()->GetTuple1(i) << std::endl; } // muck with Octree1 Cursor->ToRoot(); for (int i=0; i<8; ++i) { Cursor->ToChild(i); Octree1->SubdivideLeaf(Cursor); Cursor->ToParent(); } cout << "After Subdivide Octree1 GetNum Leaves = " << Octree1->GetNumberOfLeaves() << std::endl; cout << "Octree2 Num Leaves (expect NOT changed) = " << Octree2->GetNumberOfLeaves() << std::endl; Octree1->Delete(); Octree2->Delete(); Cursor->Delete(); leafData->Delete(); } It is clear that DeepCopy is providing a shallow copy. | ||||
Additional Information | |||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | |||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2013-01-23 23:58 | Trevor | New Issue | |||
2014-10-02 10:02 | Berk Geveci | Assigned To | => Joachim Pouderoux | ||
2014-10-02 11:40 | Joachim Pouderoux | Note Added: 0033470 | |||
2014-10-02 11:43 | Joachim Pouderoux | Status | backlog => active development | ||
2014-10-02 11:44 | Joachim Pouderoux | Description Updated | bug_revision_view_page.php?rev_id=851#r851 | ||
2014-10-02 11:44 | Joachim Pouderoux | Steps to Reproduce Updated | bug_revision_view_page.php?rev_id=853#r853 | ||
2014-10-03 04:49 | Joachim Pouderoux | Reproducibility | have not tried => always | ||
2014-10-03 04:49 | Joachim Pouderoux | Status | active development => gerrit review | ||
2014-10-03 04:49 | Joachim Pouderoux | Target Version | => 6.2.0 | ||
2014-10-03 04:50 | Joachim Pouderoux | Note Added: 0033564 | |||
2014-10-03 04:50 | Joachim Pouderoux | Status | gerrit review => closed | ||
2014-10-03 04:50 | Joachim Pouderoux | Resolution | open => fixed |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|