Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 9828)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 9829)
@@ -1418,11 +1418,15 @@
      */
     public String toXML(Collection<Entry<String, Setting<?>>> settings, boolean nopass, boolean defaults) {
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        PreferencesWriter prefWriter = new PreferencesWriter(pw, nopass, defaults);
-        prefWriter.write(settings);
-        sw.flush();
-        StringBuffer sb = sw.getBuffer();
-        return sb.toString();
+        try (
+            StringWriter sw = new StringWriter();
+            PreferencesWriter prefWriter = new PreferencesWriter(new PrintWriter(sw), nopass, defaults);
+        ) {
+            prefWriter.write(settings);
+            sw.flush();
+            return sw.toString();
+        } catch (IOException e) {
+            Main.error(e);
+            return null;
+        }
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy	(revision 9828)
+++ trunk/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy	(revision 9829)
@@ -1,2 +1,3 @@
+// License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data
 
@@ -27,3 +28,15 @@
         assert Main.pref.getDefaultColor("foo").alpha == 0x12
     }
+
+    void testToXml() {
+        assert Main.pref.toXML(true) == String.format(
+            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>%n" +
+            "<preferences xmlns='http://josm.openstreetmap.de/preferences-1.0' version='%d'>%n" +
+            "  <tag key='expert' value='true'/>%n" +
+            "  <tag key='jdk.Arrays.useLegacyMergeSort' value='false'/>%n" +
+            "  <tag key='language' value='en'/>%n" +
+            "  <tag key='osm-server.url' value='http://api06.dev.openstreetmap.org/api'/>%n" +
+            "  <tag key='osm-server.username' value='josm_test'/>%n" +
+            "</preferences>%n", Version.getInstance().getVersion())
+    }
 }
