From 15d4c841ce8b5b387850d710999c623b038910fa Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Tue, 30 Jun 2009 16:29:40 +0200
Subject: [PATCH] database: fixed NULL pointer dereference after charset change

When the filesystem_charset is changed in mpd.conf, MPD should discard
the old database.  In this error branch, MPD did not fill the GError
object properly, and logged a warning message instead, which caused a
segmentation fault.
---
 NEWS           | 1 +
 src/database.c | 9 +++++----
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/NEWS b/NEWS
index a4c377fa5..b0518128a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 ver 0.15.1 (2009/??/??)
 * commands:
   - don't resume playback when stopping during pause
+* database: fixed NULL pointer dereference after charset change
 
 
 ver 0.15 (2009/06/23)
diff --git a/src/database.c b/src/database.c
index 7257930bc..5a06dda98 100644
--- a/src/database.c
+++ b/src/database.c
@@ -318,10 +318,11 @@ db_load(GError **error)
 			if (old_charset != NULL
 			    && strcmp(new_charset, old_charset)) {
 				fclose(fp);
-				g_message("Existing database has charset \"%s\" "
-					  "instead of \"%s\"; "
-					  "discarding database file",
-					  new_charset, old_charset);
+				g_set_error(error, db_quark(), 0,
+					    "Existing database has charset "
+					    "\"%s\" instead of \"%s\"; "
+					    "discarding database file",
+					    new_charset, old_charset);
 				return false;
 			}
 		} else {