From 8921824128b8408b76c4b9194e6fcf01f0350188 Mon Sep 17 00:00:00 2001
From: Jon Evans <jon@craftyjon.com>
Date: Sun, 23 Mar 2025 20:06:57 -0400
Subject: [PATCH] Mark pad as dirty when changing layerset

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20435
---
 pcbnew/pad.cpp | 4 ++--
 pcbnew/pad.h   | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/pcbnew/pad.cpp b/pcbnew/pad.cpp
index dbbdc4a925..7e9f7a100b 100644
--- a/pcbnew/pad.cpp
+++ b/pcbnew/pad.cpp
@@ -562,8 +562,8 @@ std::shared_ptr<SHAPE> PAD::GetEffectiveShape( PCB_LAYER_ID aLayer, FLASHING fla
 
     aLayer = Padstack().EffectiveLayerFor( aLayer );
 
-    wxASSERT_MSG( m_effectiveShapes.contains( aLayer ) && m_effectiveShapes.at( aLayer ),
-                  wxT( "Null shape in PAD::GetEffectiveShape!" ) );
+    wxCHECK_MSG( m_effectiveShapes.contains( aLayer ) && m_effectiveShapes.at( aLayer ), nullptr,
+                 wxT( "Null shape in PAD::GetEffectiveShape!" ) );
 
     return m_effectiveShapes[aLayer];
 }
diff --git a/pcbnew/pad.h b/pcbnew/pad.h
index ec2f531132..0fc3df7058 100644
--- a/pcbnew/pad.h
+++ b/pcbnew/pad.h
@@ -431,7 +431,7 @@ public:
         m_polyDirty[ERROR_OUTSIDE] = true;
     }
 
-    void SetLayerSet( const LSET& aLayers ) override   { m_padStack.SetLayerSet( aLayers ); }
+    void SetLayerSet( const LSET& aLayers ) override   { m_padStack.SetLayerSet( aLayers ); SetDirty(); }
     LSET GetLayerSet() const override           { return m_padStack.LayerSet(); }
 
     void SetAttribute( PAD_ATTRIB aAttribute );