diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/removeCells.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/removeCells.C
index cb534ddb8347eadb3c0bf5d2f735424f22473330..589368127b9658d1b9b9027df232b86d92c12897 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/removeCells.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/removeCells.C
@@ -214,6 +214,18 @@ void Foam::removeCells::setRefinement
     {
         label patchI = exposedPatchIDs[i];
 
+        if (patchI < 0 || patchI >= patches.size())
+        {
+            FatalErrorIn
+            (
+                "removeCells::setRefinement(const labelList&"
+                ", const labelList&, const labelList&, polyTopoChange&)"
+            )   << "Invalid patch " << patchI
+                << " for exposed face " << exposedFaceLabels[i] << endl
+                << "Valid patches 0.." << patches.size()-1
+                << abort(FatalError);
+        }
+
         if (patches[patchI].coupled())
         {
             FatalErrorIn