Skip to content

Commit 116753e

Browse files
committed
Fix crash on orphan pointer check
1 parent 7d66dfe commit 116753e

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

src/modules/avformat/producer_avformat.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -996,6 +996,7 @@ static int setup_hwaccel_filters(producer_avformat self,
996996
if (!self->vfilter_in) {
997997
mlt_log_error(MLT_PRODUCER_SERVICE(producer), "Failed to allocate buffer source\n");
998998
avfilter_graph_free(&self->vfilter_graph);
999+
self->vfilter_in = NULL;
9991000
return -1;
10001001
}
10011002

@@ -1030,6 +1031,7 @@ static int setup_hwaccel_filters(producer_avformat self,
10301031
"Failed to set buffer source options: %d\n",
10311032
ret);
10321033
avfilter_graph_free(&self->vfilter_graph);
1034+
self->vfilter_in = NULL;
10331035
return ret;
10341036
}
10351037

@@ -1038,6 +1040,7 @@ static int setup_hwaccel_filters(producer_avformat self,
10381040
if (!params) {
10391041
mlt_log_error(MLT_PRODUCER_SERVICE(producer), "Failed to allocate buffer src params\n");
10401042
avfilter_graph_free(&self->vfilter_graph);
1043+
self->vfilter_in = NULL;
10411044
return -1;
10421045
}
10431046

@@ -1048,6 +1051,7 @@ static int setup_hwaccel_filters(producer_avformat self,
10481051
if (ret < 0) {
10491052
mlt_log_error(MLT_PRODUCER_SERVICE(producer), "Failed to set hw_frames_ctx: %d\n", ret);
10501053
avfilter_graph_free(&self->vfilter_graph);
1054+
self->vfilter_in = NULL;
10511055
return ret;
10521056
}
10531057

@@ -1058,6 +1062,7 @@ static int setup_hwaccel_filters(producer_avformat self,
10581062
"Failed to initialize buffer source: %d\n",
10591063
ret);
10601064
avfilter_graph_free(&self->vfilter_graph);
1065+
self->vfilter_in = NULL;
10611066
return ret;
10621067
}
10631068

@@ -1066,6 +1071,7 @@ static int setup_hwaccel_filters(producer_avformat self,
10661071
if (!scale_filter) {
10671072
mlt_log_error(MLT_PRODUCER_SERVICE(producer), "%s filter not available\n", filter_name);
10681073
avfilter_graph_free(&self->vfilter_graph);
1074+
self->vfilter_in = NULL;
10691075
return -1;
10701076
}
10711077

@@ -1082,6 +1088,7 @@ static int setup_hwaccel_filters(producer_avformat self,
10821088
filter_name,
10831089
ret);
10841090
avfilter_graph_free(&self->vfilter_graph);
1091+
self->vfilter_in = NULL;
10851092
return ret;
10861093
}
10871094

@@ -1098,6 +1105,8 @@ static int setup_hwaccel_filters(producer_avformat self,
10981105
"Failed to create buffer sink filter: %d\n",
10991106
ret);
11001107
avfilter_graph_free(&self->vfilter_graph);
1108+
self->vfilter_in = NULL;
1109+
self->vfilter_out = NULL;
11011110
return ret;
11021111
}
11031112

@@ -1106,6 +1115,8 @@ static int setup_hwaccel_filters(producer_avformat self,
11061115
if (ret < 0) {
11071116
mlt_log_error(MLT_PRODUCER_SERVICE(producer), "Failed to link buffer to scale: %d\n", ret);
11081117
avfilter_graph_free(&self->vfilter_graph);
1118+
self->vfilter_in = NULL;
1119+
self->vfilter_out = NULL;
11091120
return ret;
11101121
}
11111122

@@ -1115,6 +1126,8 @@ static int setup_hwaccel_filters(producer_avformat self,
11151126
"Failed to link scale to buffersink: %d\n",
11161127
ret);
11171128
avfilter_graph_free(&self->vfilter_graph);
1129+
self->vfilter_in = NULL;
1130+
self->vfilter_out = NULL;
11181131
return ret;
11191132
}
11201133

@@ -1123,6 +1136,8 @@ static int setup_hwaccel_filters(producer_avformat self,
11231136
if (ret < 0) {
11241137
mlt_log_error(MLT_PRODUCER_SERVICE(producer), "Failed to configure filter graph: %d\n", ret);
11251138
avfilter_graph_free(&self->vfilter_graph);
1139+
self->vfilter_in = NULL;
1140+
self->vfilter_out = NULL;
11261141
return ret;
11271142
}
11281143

@@ -1272,6 +1287,7 @@ static int setup_filters(producer_avformat self)
12721287
if (self->vfilter_graph && theta != self->rotation) {
12731288
// The rotation has changed. Force the filter graph to be rebuilt
12741289
avfilter_graph_free(&self->vfilter_graph);
1290+
self->vfilter_in = NULL;
12751291
self->vfilter_out = NULL;
12761292
self->rotation = theta;
12771293
}
@@ -1333,6 +1349,8 @@ static int setup_filters(producer_avformat self)
13331349
}
13341350
if (error && self->vfilter_graph) {
13351351
avfilter_graph_free(&self->vfilter_graph);
1352+
self->vfilter_in = NULL;
1353+
self->vfilter_out = NULL;
13361354
}
13371355
return error;
13381356
}
@@ -1938,6 +1956,7 @@ static void property_changed(mlt_service owner, producer_avformat self, char *na
19381956
if (self->video_index != -1) {
19391957
mlt_service_lock(MLT_PRODUCER_SERVICE(self->parent));
19401958
avfilter_graph_free(&self->vfilter_graph);
1959+
self->vfilter_in = NULL;
19411960
self->vfilter_out = NULL;
19421961
self->rotation = 0.0;
19431962
setup_filters(self);

0 commit comments

Comments
 (0)