From 92d2fb042dbc26c6fcbbf0ebc511d1e597d28ccc Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Tue, 23 Jul 2024 17:43:54 -0700 Subject: [PATCH] don't leak memory in the error cases --- backend/player/mpv/peaks.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/player/mpv/peaks.c b/backend/player/mpv/peaks.c index 0e609f8..058cc3d 100644 --- a/backend/player/mpv/peaks.c +++ b/backend/player/mpv/peaks.c @@ -9,6 +9,7 @@ int mpv_get_peaks(mpv_handle* handle, double* lPeak, double* rPeak, double* lRMS return ret; } if (result.format != MPV_FORMAT_NODE_MAP) { + mpv_free_node_contents(&result); return MPV_ERROR_PROPERTY_FORMAT; } @@ -16,34 +17,38 @@ int mpv_get_peaks(mpv_handle* handle, double* lPeak, double* rPeak, double* lRMS for (int i = 0; found < 4 && i < result.u.list->num; i++) { if (strcmp("lavfi.astats.1.Peak_level", result.u.list->keys[i]) == 0) { if (result.u.list->values[i].format != MPV_FORMAT_STRING) { - return MPV_ERROR_PROPERTY_FORMAT; + ret = MPV_ERROR_PROPERTY_FORMAT; + break; } *lPeak = atof(result.u.list->values[i].u.string); found++; } if (strcmp("lavfi.astats.2.Peak_level", result.u.list->keys[i]) == 0) { if (result.u.list->values[i].format != MPV_FORMAT_STRING) { - return MPV_ERROR_PROPERTY_FORMAT; + ret = MPV_ERROR_PROPERTY_FORMAT; + break; } *rPeak = atof(result.u.list->values[i].u.string); found++; } if (strcmp("lavfi.astats.1.RMS_level", result.u.list->keys[i]) == 0) { if (result.u.list->values[i].format != MPV_FORMAT_STRING) { - return MPV_ERROR_PROPERTY_FORMAT; + ret = MPV_ERROR_PROPERTY_FORMAT; + break; } *lRMS = atof(result.u.list->values[i].u.string); found++; } if (strcmp("lavfi.astats.2.RMS_level", result.u.list->keys[i]) == 0) { if (result.u.list->values[i].format != MPV_FORMAT_STRING) { - return MPV_ERROR_PROPERTY_FORMAT; + ret = MPV_ERROR_PROPERTY_FORMAT; + break; } *rRMS = atof(result.u.list->values[i].u.string); found++; } } - mpv_free_node_contents(&result); - return MPV_ERROR_SUCCESS; + mpv_free_node_contents(&result); + return ret; }