Revise free process to close leaks

This commit is contained in:
MrDave
2021-03-24 21:10:14 -06:00
committed by Mr-Dave
parent 2efae0227b
commit fb3a6fb079
13 changed files with 378 additions and 103 deletions

View File

@@ -554,7 +554,10 @@ static int v4l2_set_palette(ctx_v4l2cam *v4l2cam)
if ((indx_palette >= 0) && (indx_palette <= V4L2_PALETTE_COUNT_MAX)) {
retcd = v4l2_set_pixfmt(v4l2cam, palette_array[indx_palette].v4l2id);
if (retcd >= 0) {
util_free_var(palette_array);
if (palette_array != NULL) {
free(palette_array);
}
palette_array = NULL;
return 0;
}
MOTION_LOG(NTC, TYPE_VIDEO, NO_ERRNO
@@ -598,7 +601,10 @@ static int v4l2_set_palette(ctx_v4l2cam *v4l2cam)
MOTION_LOG(NTC, TYPE_VIDEO, NO_ERRNO
,_("Selected palette %s")
,palette_array[indx_palette].fourcc);
util_free_var(palette_array);
if (palette_array != NULL) {
free(palette_array);
}
palette_array = NULL;
return 0;
}
MOTION_LOG(ERR, TYPE_VIDEO, NO_ERRNO
@@ -608,8 +614,10 @@ static int v4l2_set_palette(ctx_v4l2cam *v4l2cam)
MOTION_LOG(ERR, TYPE_VIDEO, NO_ERRNO
,_("Unable to find a compatible palette format."));
util_free_var(palette_array);
if (palette_array != NULL) {
free(palette_array);
}
palette_array = NULL;
return -1;
@@ -668,7 +676,10 @@ static int v4l2_set_mmap(ctx_v4l2cam *v4l2cam)
MOTION_LOG(ERR, TYPE_VIDEO, SHOW_ERRNO
,_("Error querying buffer %i\nVIDIOC_QUERYBUF: ")
,buffer_index);
util_free_var(v4l2cam->buffers);
if (v4l2cam->buffers != NULL) {
free(v4l2cam->buffers);
}
v4l2cam->buffers = NULL;
return -1;
}
@@ -679,7 +690,10 @@ static int v4l2_set_mmap(ctx_v4l2cam *v4l2cam)
if (v4l2cam->buffers[buffer_index].ptr == MAP_FAILED) {
MOTION_LOG(ERR, TYPE_VIDEO, SHOW_ERRNO
,_("Error mapping buffer %i mmap"), buffer_index);
util_free_var(v4l2cam->buffers);
if (v4l2cam->buffers != NULL) {
free(v4l2cam->buffers);
}
v4l2cam->buffers = NULL;
return -1;
}
@@ -1083,7 +1097,10 @@ static void v4l2_log_formats(ctx_v4l2cam *v4l2cam)
dev_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
}
util_free_var(palette_array);
if (palette_array != NULL) {
free(palette_array);
}
palette_array = NULL;
return;
}
@@ -1145,23 +1162,37 @@ void v4l2_cleanup(ctx_cam *cam)
for (indx = 0; indx < (int)cam->v4l2cam->req.count; indx++){
munmap(cam->v4l2cam->buffers[indx].ptr, cam->v4l2cam->buffers[indx].size);
}
util_free_var(cam->v4l2cam->buffers);
if (cam->v4l2cam->buffers != NULL) {
free(cam->v4l2cam->buffers);
}
cam->v4l2cam->buffers = NULL;
}
if (cam->v4l2cam->devctrl_count != 0) {
for (indx = 0; indx < cam->v4l2cam->devctrl_count; indx++){
util_free_var(cam->v4l2cam->devctrl_array[indx].ctrl_iddesc);
util_free_var(cam->v4l2cam->devctrl_array[indx].ctrl_name);
if (cam->v4l2cam->devctrl_array[indx].ctrl_iddesc != NULL) {
free(cam->v4l2cam->devctrl_array[indx].ctrl_iddesc);
}
cam->v4l2cam->devctrl_array[indx].ctrl_iddesc = NULL;
if (cam->v4l2cam->devctrl_array[indx].ctrl_name != NULL) {
free(cam->v4l2cam->devctrl_array[indx].ctrl_name);
}
cam->v4l2cam->devctrl_array[indx].ctrl_name = NULL;
}
util_free_var(cam->v4l2cam->devctrl_array);
if (cam->v4l2cam->devctrl_array != NULL) {
free(cam->v4l2cam->devctrl_array);
}
cam->v4l2cam->devctrl_array = NULL;
}
cam->v4l2cam->devctrl_count=0;
util_parms_free(cam->v4l2cam->params);
if (cam->v4l2cam != NULL) {
free(cam->v4l2cam);
}
cam->v4l2cam = NULL;
util_free_var(cam->v4l2cam->params);
util_free_var(cam->v4l2cam);
cam->running_cam = FALSE;
#else
(void)cam;