Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 17522)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 17523)
@@ -342,10 +342,10 @@
     /**
      * Returns the given comment with appended hashtags from dataset changeset tags, if not already present.
-     * @param comment changeset comment
+     * @param comment changeset comment. Can be null
      * @param dataSet optional dataset, which can contain hashtags in its changeset tags
      * @return comment with dataset changesets tags, if any, not duplicated
      */
-    private static String getCommentWithDataSetHashTag(String comment, DataSet dataSet) {
-        StringBuilder result = new StringBuilder(comment);
+    static String getCommentWithDataSetHashTag(String comment, DataSet dataSet) {
+        StringBuilder result = comment == null ? new StringBuilder() : new StringBuilder(comment);
         if (dataSet != null) {
             String hashtags = dataSet.getChangeSetTags().get("hashtags");
Index: trunk/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java	(revision 17522)
+++ trunk/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java	(revision 17523)
@@ -20,4 +20,5 @@
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.io.UploadDialog.UploadAction;
 import org.openstreetmap.josm.io.UploadStrategySpecification;
@@ -195,3 +196,14 @@
         doTestValidateUploadTag("upload.source");
     }
+
+    @Test
+    void testGetCommentWithDataSetHashTag() {
+        assertEquals("", UploadDialog.getCommentWithDataSetHashTag(null, null));
+        DataSet ds = new DataSet();
+        assertEquals("foo", UploadDialog.getCommentWithDataSetHashTag("foo", ds));
+        ds.getChangeSetTags().put("hashtags", "bar");
+        assertEquals("foo #bar", UploadDialog.getCommentWithDataSetHashTag("foo", ds));
+        ds.getChangeSetTags().put("hashtags", "bar;baz;#bar");
+        assertEquals("foo #bar #baz", UploadDialog.getCommentWithDataSetHashTag("foo", ds));
+    }
 }
