From f541c1fd4395814edd5efcdcb12ff317428d0030 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 6 May 2012 16:24:32 +0200 Subject: piano: Fix memory leak --- src/libpiano/request.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/libpiano/request.c') diff --git a/src/libpiano/request.c b/src/libpiano/request.c index 2e17872..7b73bc1 100644 --- a/src/libpiano/request.c +++ b/src/libpiano/request.c @@ -71,6 +71,7 @@ static const char *PianoAudioFormatToString (PianoAudioFormat_t format) { */ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, PianoRequestType_t type) { + PianoReturn_t ret = PIANO_RET_OK; const char *jsonSendBuf; const char *method = NULL; json_object *j = json_object_new_object (); @@ -412,7 +413,6 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, case PIANO_REQUEST_RATE_SONG: { /* love/ban song */ PianoRequestDataRateSong_t *reqData = req->data; - PianoReturn_t pRet; assert (reqData != NULL); assert (reqData->song != NULL); @@ -425,12 +425,12 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, req->data = &transformedReqData; /* create request data (url, post data) */ - pRet = PianoRequest (ph, req, PIANO_REQUEST_ADD_FEEDBACK); + ret = PianoRequest (ph, req, PIANO_REQUEST_ADD_FEEDBACK); /* and reset request type/data */ req->type = PIANO_REQUEST_RATE_SONG; req->data = reqData; - return pRet; + goto cleanup; break; } @@ -438,7 +438,6 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, /* move song to a different station, needs two requests */ PianoRequestDataMoveSong_t *reqData = req->data; PianoRequestDataAddFeedback_t transformedReqData; - PianoReturn_t pRet; assert (reqData != NULL); assert (reqData->song != NULL); @@ -462,12 +461,12 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, } /* create request data (url, post data) */ - pRet = PianoRequest (ph, req, PIANO_REQUEST_ADD_FEEDBACK); + ret = PianoRequest (ph, req, PIANO_REQUEST_ADD_FEEDBACK); /* and reset request type/data */ req->type = PIANO_REQUEST_MOVE_SONG; req->data = reqData; - return pRet; + goto cleanup; break; } } @@ -498,13 +497,15 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, if (encrypted) { if ((req->postData = PianoEncryptString (ph->partner.out, jsonSendBuf)) == NULL) { - return PIANO_RET_OUT_OF_MEMORY; + ret = PIANO_RET_OUT_OF_MEMORY; } } else { req->postData = strdup (jsonSendBuf); } + +cleanup: json_object_put (j); - return PIANO_RET_OK; + return ret; } -- cgit v1.2.3