From 18a381032ad68ff420d9af344e99dbb406a7b8b1 Mon Sep 17 00:00:00 2001
From: Spiros Tsalikis <spiros.tsalikis@kitware.com>
Date: Thu, 30 Jan 2025 16:55:58 -0500
Subject: [PATCH] XdmfValuesHDF: Print error when there is a ranks mismatch

(cherry picked from commit 780a8baaf26ff1c830086d8930e94764f08f91df)
---
 ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx b/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx
index 091e3363b9a..7c641573847 100644
--- a/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx
+++ b/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx
@@ -84,7 +84,7 @@ XdmfValuesHDF::Read(XdmfArray *anArray){
                 XdmfInt64  Start[ XDMF_MAX_DIMENSION ];
                 XdmfInt64  Stride[ XDMF_MAX_DIMENSION ];
                 XdmfInt64  Count[ XDMF_MAX_DIMENSION ];
-        
+
                 // Select the HyperSlab from HDF5
                 Rank = this->DataDesc->GetHyperSlab( Start, Stride, Count );
                 H5.SelectHyperSlab( Start, Stride, Count );
@@ -92,6 +92,14 @@ XdmfValuesHDF::Read(XdmfArray *anArray){
                     XdmfErrorMessage("Return Array No Large Enough to Hold Selected Data");
                     RetArray->SetShapeFromSelection(&H5);
                 }
+                if (Rank != H5.GetRank())
+                {
+                  XdmfErrorMessage("Dataset has rank " << Rank << " with dimensions ["
+                    << this->DataDesc->GetShapeAsString() << "] but " << DataSetName
+                    <<" array's selection has rank " << H5.GetRank() << " with dimensions ["
+                    << H5.GetShapeAsString() << "]");
+                  // Error will be handled later, no need to do it here.
+                }
                 // RetArray->SetShape(Rank, Count);
                 // RetArray->SelectAll();
             } else {
-- 
GitLab