]> git.sesse.net Git - ffmpeg/commitdiff
lavfi/dnn_backend_openvino.c: fix mem leak for AVFrame upon error
authorGuo, Yejun <yejun.guo@intel.com>
Sat, 13 Mar 2021 05:35:29 +0000 (13:35 +0800)
committerGuo, Yejun <yejun.guo@intel.com>
Thu, 18 Mar 2021 01:30:09 +0000 (09:30 +0800)
libavfilter/dnn/dnn_backend_openvino.c

index 5be053b7f80a23e0db396eb6e974aed687cec21a..d86fb124d5e266655b760cf6e013d81776e6a9b9 100644 (file)
@@ -485,25 +485,12 @@ static DNNReturnType get_output_ov(void *model, const char *input_name, int inpu
     OVContext *ctx = &ov_model->ctx;
     TaskItem task;
     RequestItem request;
-    AVFrame *in_frame = av_frame_alloc();
+    AVFrame *in_frame = NULL;
     AVFrame *out_frame = NULL;
     TaskItem *ptask = &task;
     IEStatusCode status;
     input_shapes_t input_shapes;
 
-    if (!in_frame) {
-        av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for input frame\n");
-        return DNN_ERROR;
-    }
-    out_frame = av_frame_alloc();
-    if (!out_frame) {
-        av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for output frame\n");
-        av_frame_free(&in_frame);
-        return DNN_ERROR;
-    }
-    in_frame->width = input_width;
-    in_frame->height = input_height;
-
     if (ctx->options.input_resizable) {
         status = ie_network_get_input_shapes(ov_model->network, &input_shapes);
         input_shapes.shapes->shape.dims[2] = input_height;
@@ -523,6 +510,21 @@ static DNNReturnType get_output_ov(void *model, const char *input_name, int inpu
         }
     }
 
+    in_frame = av_frame_alloc();
+    if (!in_frame) {
+        av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for input frame\n");
+        return DNN_ERROR;
+    }
+    in_frame->width = input_width;
+    in_frame->height = input_height;
+
+    out_frame = av_frame_alloc();
+    if (!out_frame) {
+        av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for output frame\n");
+        av_frame_free(&in_frame);
+        return DNN_ERROR;
+    }
+
     task.done = 0;
     task.do_ioproc = 0;
     task.async = 0;