mirror of https://git.ffmpeg.org/ffmpeg.git
libavfilter/vf_curves: fix a memory leak on error path
Signed-off-by: LuMingYin <lumingyindetect@163.com> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
parent
14f9e47314
commit
3f691c0c6a
|
@ -182,20 +182,22 @@ static int parse_points_str(AVFilterContext *ctx, struct keypoint **points, cons
|
||||||
if (point->x < 0 || point->x > 1 || point->y < 0 || point->y > 1) {
|
if (point->x < 0 || point->x > 1 || point->y < 0 || point->y > 1) {
|
||||||
av_log(ctx, AV_LOG_ERROR, "Invalid key point coordinates (%f;%f), "
|
av_log(ctx, AV_LOG_ERROR, "Invalid key point coordinates (%f;%f), "
|
||||||
"x and y must be in the [0;1] range.\n", point->x, point->y);
|
"x and y must be in the [0;1] range.\n", point->x, point->y);
|
||||||
|
av_free(point);
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
if (!*points)
|
|
||||||
*points = point;
|
|
||||||
if (last) {
|
if (last) {
|
||||||
if ((int)(last->x * scale) >= (int)(point->x * scale)) {
|
if ((int)(last->x * scale) >= (int)(point->x * scale)) {
|
||||||
av_log(ctx, AV_LOG_ERROR, "Key point coordinates (%f;%f) "
|
av_log(ctx, AV_LOG_ERROR, "Key point coordinates (%f;%f) "
|
||||||
"and (%f;%f) are too close from each other or not "
|
"and (%f;%f) are too close from each other or not "
|
||||||
"strictly increasing on the x-axis\n",
|
"strictly increasing on the x-axis\n",
|
||||||
last->x, last->y, point->x, point->y);
|
last->x, last->y, point->x, point->y);
|
||||||
|
av_free(point);
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
last->next = point;
|
last->next = point;
|
||||||
}
|
}
|
||||||
|
if (!*points)
|
||||||
|
*points = point;
|
||||||
last = point;
|
last = point;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue