don't leak memory in the error cases

This commit is contained in:
Drew Weymouth
2024-07-23 17:43:54 -07:00
parent 02e5c784b3
commit 92d2fb042d
+11 -6
View File
@@ -9,6 +9,7 @@ int mpv_get_peaks(mpv_handle* handle, double* lPeak, double* rPeak, double* lRMS
return ret; return ret;
} }
if (result.format != MPV_FORMAT_NODE_MAP) { if (result.format != MPV_FORMAT_NODE_MAP) {
mpv_free_node_contents(&result);
return MPV_ERROR_PROPERTY_FORMAT; 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++) { 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 (strcmp("lavfi.astats.1.Peak_level", result.u.list->keys[i]) == 0) {
if (result.u.list->values[i].format != MPV_FORMAT_STRING) { 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); *lPeak = atof(result.u.list->values[i].u.string);
found++; found++;
} }
if (strcmp("lavfi.astats.2.Peak_level", result.u.list->keys[i]) == 0) { if (strcmp("lavfi.astats.2.Peak_level", result.u.list->keys[i]) == 0) {
if (result.u.list->values[i].format != MPV_FORMAT_STRING) { 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); *rPeak = atof(result.u.list->values[i].u.string);
found++; found++;
} }
if (strcmp("lavfi.astats.1.RMS_level", result.u.list->keys[i]) == 0) { if (strcmp("lavfi.astats.1.RMS_level", result.u.list->keys[i]) == 0) {
if (result.u.list->values[i].format != MPV_FORMAT_STRING) { 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); *lRMS = atof(result.u.list->values[i].u.string);
found++; found++;
} }
if (strcmp("lavfi.astats.2.RMS_level", result.u.list->keys[i]) == 0) { if (strcmp("lavfi.astats.2.RMS_level", result.u.list->keys[i]) == 0) {
if (result.u.list->values[i].format != MPV_FORMAT_STRING) { 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); *rRMS = atof(result.u.list->values[i].u.string);
found++; found++;
} }
} }
mpv_free_node_contents(&result);
return MPV_ERROR_SUCCESS; mpv_free_node_contents(&result);
return ret;
} }