summaryrefslogtreecommitdiffstats
path: root/gst/videofilter/gstvideobalance.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/videofilter/gstvideobalance.c')
-rw-r--r--gst/videofilter/gstvideobalance.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/gst/videofilter/gstvideobalance.c b/gst/videofilter/gstvideobalance.c
index 9ce55252..338fb66d 100644
--- a/gst/videofilter/gstvideobalance.c
+++ b/gst/videofilter/gstvideobalance.c
@@ -153,20 +153,31 @@ gst_videobalance_dispose (GObject * object)
balance = GST_VIDEOBALANCE (object);
- for (i = 0; i < 256; i++) {
- g_free (balance->tableu[i]);
- g_free (balance->tablev[i]);
+ if (balance->tableu) {
+ for (i = 0; i < 256; i++)
+ g_free (balance->tableu[i]);
+ g_free (balance->tableu);
+ balance->tableu = NULL;
}
- g_free (balance->tabley);
- g_free (balance->tableu);
- g_free (balance->tablev);
- channels = balance->channels;
+ if (balance->tablev) {
+ for (i = 0; i < 256; i++)
+ g_free (balance->tablev[i]);
+ g_free (balance->tablev);
+ balance->tablev = NULL;
+ }
+ if (balance->tabley) {
+ g_free (balance->tabley);
+ balance->tabley = NULL;
+ }
+
+ channels = balance->channels;
while (channels) {
GstColorBalanceChannel *channel = channels->data;
g_object_unref (channel);
+ channels->data = NULL;
channels = g_list_next (channels);
}