diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/routine.c | 7 | ||||
-rw-r--r-- | src/analysis/routine.h | 2 | ||||
-rw-r--r-- | src/analysis/type-int.h | 2 | ||||
-rw-r--r-- | src/analysis/type.c | 15 | ||||
-rw-r--r-- | src/analysis/type.h | 2 |
5 files changed, 21 insertions, 7 deletions
diff --git a/src/analysis/routine.c b/src/analysis/routine.c index d223165..19782c7 100644 --- a/src/analysis/routine.c +++ b/src/analysis/routine.c @@ -51,7 +51,7 @@ struct _GBinRoutine GDataType *ret_type; /* Type retourné */ GDataType *namespace; /* Espace de noms / classe */ - const char *ns_sep; /* Séparateur d'éléments */ + char *ns_sep; /* Séparateur d'éléments */ char *name; /* Désignation humaine */ GDataType *full_name; /* Désignation très complète */ @@ -250,11 +250,14 @@ void g_binary_routine_set_type(GBinRoutine *routine, RoutineType type) * * ******************************************************************************/ -void g_binary_routine_set_namespace(GBinRoutine *routine, GDataType *namespace, const char *sep) +void g_binary_routine_set_namespace(GBinRoutine *routine, GDataType *namespace, char *sep) { if (routine->namespace != NULL) g_object_unref(G_OBJECT(routine->namespace)); + if (routine->ns_sep != NULL) + free(routine->ns_sep); + routine->namespace = namespace; routine->ns_sep = sep; diff --git a/src/analysis/routine.h b/src/analysis/routine.h index 9671c92..e1512a8 100644 --- a/src/analysis/routine.h +++ b/src/analysis/routine.h @@ -75,7 +75,7 @@ GBinRoutine *g_binary_routine_new_constructor(GDataType *); void g_binary_routine_set_type(GBinRoutine *, RoutineType); /* Définit le groupe d'appartenance d'une routine donnée. */ -void g_binary_routine_set_namespace(GBinRoutine *, GDataType *, const char *); +void g_binary_routine_set_namespace(GBinRoutine *, GDataType *, char *); /* Fournit le groupe d'appartenance d'une routine donnée. */ GDataType *g_binary_routine_get_namespace(const GBinRoutine *); diff --git a/src/analysis/type-int.h b/src/analysis/type-int.h index 3c34680..08b6338 100644 --- a/src/analysis/type-int.h +++ b/src/analysis/type-int.h @@ -49,7 +49,7 @@ struct _GDataType GObject parent; /* A laisser en premier */ GDataType *namespace; /* Espace de noms / classe */ - const char *ns_sep; /* Séparateur d'éléments */ + char *ns_sep; /* Séparateur d'éléments */ TypeQualifier qualifiers; /* Eventuels qualificatifs */ diff --git a/src/analysis/type.c b/src/analysis/type.c index 5c1878f..d0ab4f5 100644 --- a/src/analysis/type.c +++ b/src/analysis/type.c @@ -25,6 +25,7 @@ #include <malloc.h> +#include <string.h> #include "type-int.h" @@ -130,6 +131,9 @@ static void g_data_type_dispose(GDataType *type) static void g_data_type_finalize(GDataType *type) { + if (type->ns_sep != NULL) + free(type->ns_sep); + G_OBJECT_CLASS(g_data_type_parent_class)->finalize(G_OBJECT(type)); } @@ -152,6 +156,7 @@ GDataType *g_data_type_dup(const GDataType *type) GDataType *result; /* Copie à retourner */ GDataTypeClass *class; /* Classe du type */ GDataType *ns; /* Eventuel espace de noms */ + char *ns_sep; /* Séparation des espaces */ class = G_DATA_TYPE_GET_CLASS(type); @@ -160,7 +165,10 @@ GDataType *g_data_type_dup(const GDataType *type) if (type->namespace != NULL) { ns = g_data_type_dup(type->namespace); - g_data_type_set_namespace(result, ns, type->ns_sep); + ns_sep = type->ns_sep != NULL ? strdup(type->ns_sep) : NULL; + + g_data_type_set_namespace(result, ns, ns_sep); + } result->qualifiers = type->qualifiers; @@ -232,11 +240,14 @@ char *g_data_type_to_string(const GDataType *type, bool include) * * ******************************************************************************/ -void g_data_type_set_namespace(GDataType *type, GDataType *namespace, const char *sep) +void g_data_type_set_namespace(GDataType *type, GDataType *namespace, char *sep) { if (type->namespace != NULL) g_object_unref(G_OBJECT(type->namespace)); + if (type->ns_sep != NULL) + free(type->ns_sep); + type->namespace = namespace; type->ns_sep = sep; diff --git a/src/analysis/type.h b/src/analysis/type.h index a8a9d5f..108256e 100644 --- a/src/analysis/type.h +++ b/src/analysis/type.h @@ -70,7 +70,7 @@ GDataType *g_data_type_dup(const GDataType *); char *g_data_type_to_string(const GDataType *, bool); /* Définit le groupe d'appartenance d'un type donné. */ -void g_data_type_set_namespace(GDataType *, GDataType *, const char *); +void g_data_type_set_namespace(GDataType *, GDataType *, char *); /* Fournit le groupe d'appartenance d'un type donné. */ GDataType *g_data_type_get_namespace(const GDataType *); |