From 1692c466f49210d570f553b5c4f43cac05ad3f2e Mon Sep 17 00:00:00 2001 From: Tomas Farago Date: Fri, 14 Feb 2020 15:40:14 +0100 Subject: Do not release NULL pointers --- src/ufo-general-backproject-task.c | 20 +++++++++++++++++--- src/ufo-gradient-task.c | 5 ++++- src/ufo-interpolate-stream-task.c | 6 ++++-- src/ufo-interpolate-task.c | 6 ++++-- src/ufo-measure-task.c | 6 ++++-- src/ufo-retrieve-phase-task.c | 6 ++++-- src/ufo-segment-task.c | 5 ++++- 7 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/ufo-general-backproject-task.c b/src/ufo-general-backproject-task.c index 0190a09..a801bce 100644 --- a/src/ufo-general-backproject-task.c +++ b/src/ufo-general-backproject-task.c @@ -1943,14 +1943,18 @@ ufo_general_backproject_task_finalize (GObject *object) { guint i; UfoGeneralBackprojectTaskPrivate *priv = UFO_GENERAL_BACKPROJECT_TASK_GET_PRIVATE (object); - g_object_unref (priv->resources); - priv->resources = NULL; + if (priv->resources) { + g_object_unref (priv->resources); + priv->resources = NULL; + } ufo_scarray_free (priv->region); ufo_scarray_free (priv->region_x); ufo_scarray_free (priv->region_y); ufo_ctgeometry_free (priv->geometry); - g_hash_table_destroy (priv->node_props_table); + if (priv->node_props_table) { + g_hash_table_destroy (priv->node_props_table); + } if (priv->projections) { for (i = 0; i < priv->burst; i++) { @@ -2274,6 +2278,16 @@ static void ufo_general_backproject_task_init(UfoGeneralBackprojectTask *self) { self->priv = UFO_GENERAL_BACKPROJECT_TASK_GET_PRIVATE(self); + self->priv->resources = NULL; + self->priv->node_props_table = NULL; + self->priv->projections = NULL; + self->priv->chunks = NULL; + self->priv->cl_regions = NULL; + self->priv->vector_arguments = NULL; + self->priv->context = NULL; + self->priv->kernel = NULL; + self->priv->rest_kernel = NULL; + self->priv->sampler = NULL; /* Scalars */ self->priv->burst = 0; diff --git a/src/ufo-gradient-task.c b/src/ufo-gradient-task.c index 4227fd7..587c893 100644 --- a/src/ufo-gradient-task.c +++ b/src/ufo-gradient-task.c @@ -193,7 +193,10 @@ static void ufo_gradient_task_finalize (GObject *object) { UfoGradientTaskPrivate *priv = UFO_GRADIENT_TASK_GET_PRIVATE (object); - UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernel)); + if (priv->kernel) { + UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernel)); + priv->kernel = NULL; + } G_OBJECT_CLASS (ufo_gradient_task_parent_class)->finalize (object); } diff --git a/src/ufo-interpolate-stream-task.c b/src/ufo-interpolate-stream-task.c index a3c854d..eefd4f7 100644 --- a/src/ufo-interpolate-stream-task.c +++ b/src/ufo-interpolate-stream-task.c @@ -232,8 +232,10 @@ ufo_interpolate_stream_task_finalize (GObject *object) priv = UFO_INTERPOLATE_STREAM_TASK_GET_PRIVATE (object); g_ptr_array_free (priv->copies, TRUE); - UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernel)); - priv->kernel = NULL; + if (priv->kernel) { + UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernel)); + priv->kernel = NULL; + } G_OBJECT_CLASS (ufo_interpolate_stream_task_parent_class)->finalize (object); } diff --git a/src/ufo-interpolate-task.c b/src/ufo-interpolate-task.c index 8e07f3e..2857b43 100644 --- a/src/ufo-interpolate-task.c +++ b/src/ufo-interpolate-task.c @@ -224,8 +224,10 @@ ufo_interpolate_task_finalize (GObject *object) priv->y = NULL; } - UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernel)); - priv->kernel = NULL; + if (priv->kernel) { + UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernel)); + priv->kernel = NULL; + } G_OBJECT_CLASS (ufo_interpolate_task_parent_class)->finalize (object); } diff --git a/src/ufo-measure-task.c b/src/ufo-measure-task.c index aad9996..a5f7712 100644 --- a/src/ufo-measure-task.c +++ b/src/ufo-measure-task.c @@ -580,8 +580,10 @@ ufo_measure_task_finalize (GObject *object) gint i; for (i = 0; i < M_LAST; i++) { - UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernels[i])); - priv->kernels[i] = NULL; + if (priv->kernels[i]) { + UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernels[i])); + priv->kernels[i] = NULL; + } if (priv->postproc_kernels[i]) { UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->postproc_kernels[i])); priv->postproc_kernels[i] = NULL; diff --git a/src/ufo-retrieve-phase-task.c b/src/ufo-retrieve-phase-task.c index 8bb504b..01e690f 100644 --- a/src/ufo-retrieve-phase-task.c +++ b/src/ufo-retrieve-phase-task.c @@ -319,8 +319,10 @@ ufo_retrieve_phase_task_finalize (GObject *object) if (priv->kernels) { for (int i = 0; i < N_METHODS; i++) { - UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernels[i])); - priv->kernels[i] = NULL; + if (priv->kernels[i]) { + UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->kernels[i])); + priv->kernels[i] = NULL; + } } } diff --git a/src/ufo-segment-task.c b/src/ufo-segment-task.c index acd7b28..a110cde 100644 --- a/src/ufo-segment-task.c +++ b/src/ufo-segment-task.c @@ -406,7 +406,10 @@ ufo_segment_task_finalize (GObject *object) if (priv->threshold != NULL) UFO_RESOURCES_CHECK_CLERR (clReleaseKernel (priv->threshold)); - UFO_RESOURCES_CHECK_CLERR (clReleaseContext (priv->context)); + if (priv->context) { + UFO_RESOURCES_CHECK_CLERR (clReleaseContext (priv->context)); + priv->context = NULL; + } G_OBJECT_CLASS (ufo_segment_task_parent_class)->finalize (object); } -- cgit v1.2.1