fix(mpd): Clear mpd error after getting error info

Before, polybar would crash, trying to throw a server error because
mpd_connection_get_server_error asserts that the error is of type server
error, but it isn't because it was cleared
This commit is contained in:
patrick96 2018-02-13 22:01:16 +01:00 committed by NBonaparte
parent f531613723
commit 81d2d09ba9

View File

@ -29,15 +29,26 @@ namespace mpd {
void check_errors(mpd_connection* conn) { void check_errors(mpd_connection* conn) {
check_connection(conn); check_connection(conn);
string err_msg;
switch (mpd_connection_get_error(conn)) { switch (mpd_connection_get_error(conn)) {
case MPD_ERROR_SUCCESS: case MPD_ERROR_SUCCESS:
return; return;
case MPD_ERROR_SERVER: case MPD_ERROR_SERVER:
{
err_msg = mpd_connection_get_error_message(conn);
enum mpd_server_error server_err = mpd_connection_get_server_error(conn);
mpd_connection_clear_error(conn); mpd_connection_clear_error(conn);
throw server_error(mpd_connection_get_error_message(conn), mpd_connection_get_server_error(conn)); throw server_error(err_msg, server_err);
}
default: default:
{
err_msg = mpd_connection_get_error_message(conn);
enum mpd_error err = mpd_connection_get_error(conn);
mpd_connection_clear_error(conn); mpd_connection_clear_error(conn);
throw client_error(mpd_connection_get_error_message(conn), mpd_connection_get_error(conn)); throw client_error(err_msg, err);
}
} }
} }