diff --git a/src/settings.cpp b/src/settings.cpp
index ca0775330..65896ef27 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -667,8 +667,9 @@ void Settings::getUpdatedConfigObject(std::istream &is,
 		bool &changed)
 {
 	std::string name, value;
+
 	if (!parseConfigObject(is, name, value)) {
-		dst.push_back(value + '\n');
+		dst.push_back(value + (is.eof() ? "" : "\n"));
 		return;
 	}
 
@@ -679,7 +680,7 @@ void Settings::getUpdatedConfigObject(std::istream &is,
 			changed = true;
 		}
 
-		dst.push_back(name + " = " + new_value + '\n');
+		dst.push_back(name + " = " + new_value + (is.eof() ? "" : "\n"));
 		updated.insert(name);
 	} else { // File contains a setting which is not in m_settings
 		changed = true;