Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 14250)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 14251)
@@ -539,4 +539,5 @@
                 dialog.setVisible(true);
                 if (!dialog.isApplied()) {
+                    dialog.dispose();
                     return new UserCancelException();
                 }
@@ -547,4 +548,5 @@
                     cmds.addAll(dialog.buildResolutionCommands());
                 }
+                dialog.dispose();
                 return null;
             });
@@ -632,3 +634,9 @@
         return tr("{0} ({1})", key, values);
     }
+
+    @Override
+    public void dispose() {
+        setTargetPrimitive(null, false);
+        super.dispose();
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 14250)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 14251)
@@ -409,4 +409,5 @@
     @Override
     public void destroy() {
+        DatasetEventManager.getInstance().removeDatasetListener(this);
         DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
         if (ds != null) {
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 14250)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 14251)
@@ -259,6 +259,8 @@
     public void setUploadedPrimitives(APIDataSet toUpload) {
         if (toUpload == null) {
-            List<OsmPrimitive> emptyList = Collections.emptyList();
-            pnlUploadedObjects.setUploadedPrimitives(emptyList, emptyList, emptyList);
+            if (pnlUploadedObjects != null) {
+                List<OsmPrimitive> emptyList = Collections.emptyList();
+                pnlUploadedObjects.setUploadedPrimitives(emptyList, emptyList, emptyList);
+            }
             return;
         }
@@ -698,3 +700,18 @@
     }
 
+    /**
+     * Clean dialog state and release resources.
+     * @since 14251
+     */
+    public void clean() {
+        setUploadedPrimitives(null);
+        pnlBasicUploadSettings = null;
+        pnlChangesetManagement = null;
+        pnlTagSettings = null;
+        pnlUploadedObjects = null;
+        pnlUploadStrategySelectionPanel = null;
+        tpConfigPanels = null;
+        btnUpload = null;
+        dataSet = null;
+    }
 }
