diff --git a/common/tool/action_menu.cpp b/common/tool/action_menu.cpp
index 91f46d5a2e..79925aa5c0 100644
--- a/common/tool/action_menu.cpp
+++ b/common/tool/action_menu.cpp
@@ -183,20 +183,21 @@ wxMenuItem* ACTION_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry
 
 wxMenuItem* ACTION_MENU::Add( ACTION_MENU* aMenu )
 {
-    m_submenus.push_back( aMenu );
+    ACTION_MENU* menuCopy = aMenu->Clone();
+    m_submenus.push_back( menuCopy );
 
-    wxASSERT_MSG( !aMenu->m_title.IsEmpty(), "Set a title for ACTION_MENU using SetTitle()" );
+    wxASSERT_MSG( !menuCopy->m_title.IsEmpty(), "Set a title for ACTION_MENU using SetTitle()" );
 
     if( !!aMenu->m_icon )
     {
-        wxMenuItem* newItem = new wxMenuItem( this, -1, aMenu->m_title );
+        wxMenuItem* newItem = new wxMenuItem( this, -1, menuCopy->m_title );
         AddBitmapToMenuItem( newItem, KiBitmap( aMenu->m_icon ) );
-        newItem->SetSubMenu( aMenu );
+        newItem->SetSubMenu( menuCopy );
         return Append( newItem );
     }
     else
     {
-        return AppendSubMenu( aMenu, aMenu->m_title );
+        return AppendSubMenu( menuCopy, menuCopy->m_title );
     }
 }
 
diff --git a/eeschema/menubar.cpp b/eeschema/menubar.cpp
index 3eb72f8ee5..06e9fc51fd 100644
--- a/eeschema/menubar.cpp
+++ b/eeschema/menubar.cpp
@@ -75,7 +75,7 @@ void SCH_EDIT_FRAME::ReCreateMenuBar()
         fileMenu->Add( ACTIONS::doNew );
         fileMenu->Add( ACTIONS::open );
 
-        wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() );
+        wxMenuItem* item = fileMenu->Add( openRecentMenu );
 
         // Add the file menu condition here since it needs the item ID for the submenu
         ACTION_CONDITIONS cond;
diff --git a/gerbview/menubar.cpp b/gerbview/menubar.cpp
index 7af26ef4a9..f1a5484373 100644
--- a/gerbview/menubar.cpp
+++ b/gerbview/menubar.cpp
@@ -77,7 +77,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar()
 
     fileMenu->Add( GERBVIEW_ACTIONS::openAutodetected );
     fileMenu->Add( GERBVIEW_ACTIONS::openGerber );
-    wxMenuItem* gbrItem = fileMenu->Add( openRecentGbrMenu->Clone() );
+    wxMenuItem* gbrItem = fileMenu->Add( openRecentGbrMenu );
     RegisterUIUpdateHandler( gbrItem->GetId(), FileHistoryCond( recentGbrFiles) );
 
 
@@ -99,7 +99,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar()
     m_drillFileHistory.UpdateClearText( openRecentDrlMenu, _( "Clear Recent Drill Files" ) );
 
     fileMenu->Add( GERBVIEW_ACTIONS::openDrillFile );
-    wxMenuItem* drillItem = fileMenu->Add( openRecentDrlMenu->Clone() );
+    wxMenuItem* drillItem = fileMenu->Add( openRecentDrlMenu );
     RegisterUIUpdateHandler( drillItem->GetId(), FileHistoryCond( m_drillFileHistory ) );
 
 
@@ -120,7 +120,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar()
     m_jobFileHistory.UpdateClearText( openRecentJobMenu, _( "Clear Recent Job Files" ) );
 
     fileMenu->Add( GERBVIEW_ACTIONS::openJobFile );
-    wxMenuItem* jobItem = fileMenu->Add( openRecentJobMenu->Clone() );
+    wxMenuItem* jobItem = fileMenu->Add( openRecentJobMenu );
     RegisterUIUpdateHandler( jobItem->GetId(), FileHistoryCond( m_jobFileHistory ) );
 
 
@@ -141,7 +141,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar()
     m_zipFileHistory.UpdateClearText( openRecentZipMenu, _( "Clear Recent Zip Files" ) );
 
     fileMenu->Add( GERBVIEW_ACTIONS::openZipFile );
-    wxMenuItem* zipItem = fileMenu->Add( openRecentZipMenu->Clone() );
+    wxMenuItem* zipItem = fileMenu->Add( openRecentZipMenu );
     RegisterUIUpdateHandler( zipItem->GetId(), FileHistoryCond( m_zipFileHistory ) );
 
 #undef FileHistoryCond
diff --git a/kicad/menubar.cpp b/kicad/menubar.cpp
index a74615170f..5056aa3f1e 100644
--- a/kicad/menubar.cpp
+++ b/kicad/menubar.cpp
@@ -81,7 +81,7 @@ void KICAD_MANAGER_FRAME::ReCreateMenuBar()
 
     fileMenu->Add( KICAD_MANAGER_ACTIONS::openProject );
 
-    wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() );
+    wxMenuItem* item = fileMenu->Add( openRecentMenu );
 
     // Add the file menu condition here since it needs the item ID for the submenu
     ACTION_CONDITIONS cond;
diff --git a/pagelayout_editor/menubar.cpp b/pagelayout_editor/menubar.cpp
index 62f7aad2c5..093014e074 100644
--- a/pagelayout_editor/menubar.cpp
+++ b/pagelayout_editor/menubar.cpp
@@ -71,7 +71,7 @@ void PL_EDITOR_FRAME::ReCreateMenuBar()
     fileMenu->Add( ACTIONS::doNew );
     fileMenu->Add( ACTIONS::open );
 
-    wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() );
+    wxMenuItem* item = fileMenu->Add( openRecentMenu );
 
     // Add the file menu condition here since it needs the item ID for the submenu
     ACTION_CONDITIONS cond;
diff --git a/pcbnew/menubar_pcb_editor.cpp b/pcbnew/menubar_pcb_editor.cpp
index f4038d8283..43b4ab9ae7 100644
--- a/pcbnew/menubar_pcb_editor.cpp
+++ b/pcbnew/menubar_pcb_editor.cpp
@@ -77,7 +77,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
         fileMenu->Add( ACTIONS::doNew );
         fileMenu->Add( ACTIONS::open );
 
-        wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() );
+        wxMenuItem* item = fileMenu->Add( openRecentMenu );
 
         // Add the file menu condition here since it needs the item ID for the submenu
         ACTION_CONDITIONS cond;