diff --git a/pcbnew/modedit.cpp b/pcbnew/modedit.cpp
index 2aefaf09e9..8e4935a39e 100644
--- a/pcbnew/modedit.cpp
+++ b/pcbnew/modedit.cpp
@@ -317,14 +317,18 @@ wxClientDC dc(DrawPanel);
 			if ( m_Pcb->m_Modules ) m_Pcb->m_Modules->m_Flags = 0;
 			//if either m_Reference or m_Value are gone, reinstate them - 
 			//otherwise it becomes hard to see what you are working with in the layout!
-			TEXTE_MODULE* ref = m_Pcb->m_Modules->m_Reference;
-			TEXTE_MODULE* val = m_Pcb->m_Modules->m_Value;
-			ref->m_NoShow = 0;
-			val->m_NoShow = 0;
-			ref->m_Type = 0; 
-			val->m_Type = 1; 
-			if(ref->m_Text.Length() == 0) ref->m_Text = L"Ref**"; 
-			if(val->m_Text.Length() == 0) val->m_Text = L"Val**"; 			
+			if(m_Pcb && m_Pcb->m_Modules){
+				TEXTE_MODULE* ref = m_Pcb->m_Modules->m_Reference;
+				TEXTE_MODULE* val = m_Pcb->m_Modules->m_Value;
+				if(val & ref){
+					ref->m_NoShow = 0;
+					val->m_NoShow = 0;
+					ref->m_Type = 0; 
+					val->m_Type = 1; 
+					if(ref->m_Text.Length() == 0) ref->m_Text = L"Ref**"; 
+					if(val->m_Text.Length() == 0) val->m_Text = L"Val**"; 	
+				}
+			}				
 			GetScreen()->ClrModify();
 			Zoom_Automatique(TRUE);
 			if ( m_Draw3DFrame )