diff --git a/NEWS b/NEWS
index a9440b844..e1c499860 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 ver 0.18.18 (not yet released)
 * decoder
   - ffmpeg: support opus
+* fix crash on failed filename charset conversion
 
 ver 0.18.17 (2014/11/02)
 * playlist
diff --git a/src/fs/AllocatedPath.cxx b/src/fs/AllocatedPath.cxx
index 37b79a685..4651ea625 100644
--- a/src/fs/AllocatedPath.cxx
+++ b/src/fs/AllocatedPath.cxx
@@ -46,7 +46,11 @@ AllocatedPath::Build(const_pointer a, const_pointer b)
 AllocatedPath
 AllocatedPath::FromUTF8(const char *path_utf8)
 {
-	return AllocatedPath(Donate(), ::PathFromUTF8(path_utf8));
+	char *path = ::PathFromUTF8(path_utf8);
+	if (path == nullptr)
+		return AllocatedPath::Null();
+
+	return AllocatedPath(Donate(), path);
 }
 
 AllocatedPath