summaryrefslogtreecommitdiff
path: root/src/analysis/variable.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-11-26 18:21:13 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-11-26 18:21:13 (GMT)
commit70a1a55321282d0aa1e7f13d327db21aa25d212a (patch)
treec5ef0d8050af491abb587a01a5c93fed5188353d /src/analysis/variable.c
parentc951852890ce173c4d65450157d42127da2d061c (diff)
Fixed some memory leaks at exit.
Diffstat (limited to 'src/analysis/variable.c')
-rw-r--r--src/analysis/variable.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/analysis/variable.c b/src/analysis/variable.c
index 9fb2e81..a2a8275 100644
--- a/src/analysis/variable.c
+++ b/src/analysis/variable.c
@@ -63,6 +63,12 @@ static void g_binary_variable_class_init(GBinVariableClass *);
/* Initialise l'instande d'une variable. */
static void g_binary_variable_init(GBinVariable *);
+/* Supprime toutes les références externes. */
+static void g_binary_variable_dispose(GBinVariable *);
+
+/* Procède à la libération totale de la mémoire. */
+static void g_binary_variable_finalize(GBinVariable *);
+
/* -------------------- BASE DE VARIABLES OU VARIABLES INCONNUES -------------------- */
@@ -117,6 +123,12 @@ G_DEFINE_TYPE(GBinVariable, g_binary_variable, G_TYPE_OBJECT);
static void g_binary_variable_class_init(GBinVariableClass *klass)
{
+ GObjectClass *object; /* Autre version de la classe */
+
+ object = G_OBJECT_CLASS(klass);
+
+ object->dispose = (GObjectFinalizeFunc/* ! */)g_binary_variable_dispose;
+ object->finalize = (GObjectFinalizeFunc)g_binary_variable_finalize;
}
@@ -141,6 +153,51 @@ static void g_binary_variable_init(GBinVariable *var)
/******************************************************************************
* *
+* Paramètres : var = instance d'objet GLib à traiter. *
+* *
+* Description : Supprime toutes les références externes. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_binary_variable_dispose(GBinVariable *var)
+{
+ g_clear_object(&var->type);
+
+ g_clear_object(&var->owner);
+
+ G_OBJECT_CLASS(g_binary_variable_parent_class)->dispose(G_OBJECT(var));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : var = instance d'objet GLib à traiter. *
+* *
+* Description : Procède à la libération totale de la mémoire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_binary_variable_finalize(GBinVariable *var)
+{
+ if (var->name != NULL)
+ free(var->name);
+
+ G_OBJECT_CLASS(g_binary_variable_parent_class)->finalize(G_OBJECT(var));
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : type = type de la variable à mettre en place. *
* *
* Description : Crée une représentation de variable de type donné. *