This patch has been merged upstream. Drop next update.
Commit: bd90728f886bbeb6d69aafd4f68f934109b96f91
Commit: 6d4ce9e9b84963688e283adaf775ed40d5d775a1

Index: src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
--- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp.orig
+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
@@ -133,7 +133,6 @@ void SMDS_VtkVolume::initPoly(const std::vector<vtkIdT
 bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)
 {
   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-#ifdef VTK_CELL_ARRAY_V2
   vtkNew<vtkIdList> cellPoints;
   grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
   if (nbNodes != cellPoints->GetNumberOfIds())
@@ -145,20 +144,6 @@ bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* 
     {
       cellPoints->SetId(i, nodes[i]->getVtkId());
     }
-#else
-  vtkIdType npts = 0;
-  vtkIdType* pts = 0;
-  grid->GetCellPoints(myVtkID, npts, pts);
-  if (nbNodes != npts)
-    {
-      MESSAGE("ChangeNodes problem: not the same number of nodes " << npts << " -> " << nbNodes);
-      return false;
-    }
-  for (int i = 0; i < nbNodes; i++)
-    {
-      pts[i] = nodes[i]->getVtkId();
-    }
-#endif
   SMDS_Mesh::_meshList[myMeshId]->setMyModified();
   return true;
 }
@@ -220,9 +205,10 @@ int SMDS_VtkVolume::NbFaces() const
       break;
     case VTK_POLYHEDRON:
       {
-        vtkIdType nFaces = 0;
-        vtkIdTypePtr ptIds = 0;
-        grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+        vtkNew<vtkIdList> faceStream;
+        grid->GetFaceStream( this->myVtkID, faceStream);
+        vtkIdType nFaces = faceStream->GetId(0);
+        vtkIdType *ptIds = faceStream->GetPointer(1);
         nbFaces = nFaces;
         break;
       }
@@ -249,9 +235,10 @@ int SMDS_VtkVolume::NbNodes() const
     }
   else
     {
-      vtkIdType nFaces = 0;
-      vtkIdTypePtr ptIds = 0;
-      grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+      vtkNew<vtkIdList> faceStream;
+      grid->GetFaceStream( this->myVtkID, faceStream);
+      vtkIdType nFaces = faceStream->GetId(0);
+      vtkIdType *ptIds = faceStream->GetPointer(1);
       int id = 0;
       for (int i = 0; i < nFaces; i++)
         {
@@ -289,9 +276,10 @@ int SMDS_VtkVolume::NbEdges() const
       break;
     case VTK_POLYHEDRON:
       {
-        vtkIdType nFaces = 0;
-        vtkIdTypePtr ptIds = 0;
-        grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+        vtkNew<vtkIdList> faceStream;
+        grid->GetFaceStream( this->myVtkID, faceStream);
+        vtkIdType nFaces = faceStream->GetId(0);
+        vtkIdType *ptIds = faceStream->GetPointer(1);
         nbEdges = 0;
         int id = 0;
         for (int i = 0; i < nFaces; i++)
@@ -325,9 +313,10 @@ int SMDS_VtkVolume::NbFaceNodes(const int face_ind) co
   int nbNodes = 0;
   if (aVtkType == VTK_POLYHEDRON)
     {
-      vtkIdType nFaces = 0;
-      vtkIdTypePtr ptIds = 0;
-      grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+      vtkNew<vtkIdList> faceStream;
+      grid->GetFaceStream( this->myVtkID, faceStream);
+      vtkIdType nFaces = faceStream->GetId(0);
+      vtkIdType *ptIds = faceStream->GetPointer(1);
       int id = 0;
       for (int i = 0; i < nFaces; i++)
         {
@@ -355,9 +344,10 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetFaceNode(const
   const SMDS_MeshNode* node = 0;
   if (aVtkType == VTK_POLYHEDRON)
     {
-      vtkIdType nFaces = 0;
-      vtkIdTypePtr ptIds = 0;
-      grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+      vtkNew<vtkIdList> faceStream;
+      grid->GetFaceStream( this->myVtkID, faceStream);
+      vtkIdType nFaces = faceStream->GetId(0);
+      vtkIdType *ptIds = faceStream->GetPointer(1);
       int id = 0;
       for (int i = 0; i < nFaces; i++)
         {
@@ -385,9 +375,10 @@ std::vector<int> SMDS_VtkVolume::GetQuantities() const
   vtkIdType aVtkType = grid->GetCellType(this->myVtkID);
   if (aVtkType == VTK_POLYHEDRON)
     {
-      vtkIdType nFaces = 0;
-      vtkIdTypePtr ptIds = 0;
-      grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+      vtkNew<vtkIdList> faceStream;
+      grid->GetFaceStream( this->myVtkID, faceStream);
+      vtkIdType nFaces = faceStream->GetId(0);
+      vtkIdType *ptIds = faceStream->GetPointer(1);
       int id = 0;
       for (int i = 0; i < nFaces; i++)
         {
@@ -443,9 +434,10 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetNode(const int
   vtkIdType aVtkType = grid->GetCellType(this->myVtkID);
   if ( aVtkType == VTK_POLYHEDRON)
   {
-    vtkIdType nFaces = 0;
-    vtkIdTypePtr ptIds = 0;
-    grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+    vtkNew<vtkIdList> faceStream;
+    grid->GetFaceStream( this->myVtkID, faceStream);
+    vtkIdType nFaces = faceStream->GetId(0);
+    vtkIdType *ptIds = faceStream->GetPointer(1);
     int id = 0, nbPoints = 0;
     for (int i = 0; i < nFaces; i++)
     {
@@ -474,9 +466,10 @@ int SMDS_VtkVolume::GetNodeIndex( const SMDS_MeshNode*
   const  vtkIdType aVtkType = grid->GetCellType(this->myVtkID);
   if ( aVtkType == VTK_POLYHEDRON)
   {
-    vtkIdType nFaces = 0;
-    vtkIdTypePtr ptIds = 0;
-    grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
+    vtkNew<vtkIdList> faceStream;
+    grid->GetFaceStream( this->myVtkID, faceStream);
+    vtkIdType nFaces = faceStream->GetId(0);
+    vtkIdType *ptIds = faceStream->GetPointer(1);
     int id = 0;
     for (int iF = 0; iF < nFaces; iF++)
     {
