mirror of
https://github.com/Motion-Project/motion.git
synced 2026-05-19 03:55:43 -04:00
Revise free process to close leaks
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user