Code

mpdclient: fix memory leak in mpdclient_finish_command()
authorMax Kellermann <max@duempel.org>
Sun, 21 Sep 2008 20:42:51 +0000 (22:42 +0200)
committerMax Kellermann <max@duempel.org>
Sun, 21 Sep 2008 20:42:51 +0000 (22:42 +0200)
During authentication, the message pointer was allocated, but never
freed.  Allocate it only if it is really used (and freed).

src/mpdclient.c

index c15c34d6dce5924cf0029716eefff654ecb7fbdd..fcdaa4ef452c0923d36d56ad235cc47ce6e0e36a 100644 (file)
@@ -123,16 +123,17 @@ mpdclient_finish_command(mpdclient_t *c)
        mpd_finishCommand(c->connection);
 
        if (c->connection->error) {
-               gchar *msg = locale_to_utf8(c->connection->errorStr);
                gint error = c->connection->error;
-
-               if (error == MPD_ERROR_ACK)
-                       error = error | (c->connection->errorCode << 8);
+               gchar *msg;
 
                if (c->connection->errorCode == MPD_ACK_ERROR_PERMISSION &&
                    screen_auth(c) == 0)
                        return 0;
 
+               if (error == MPD_ERROR_ACK)
+                       error = error | (c->connection->errorCode << 8);
+
+               msg = locale_to_utf8(c->connection->errorStr);
                error_cb(c, error, msg);
                g_free(msg);
                return error;