summaryrefslogtreecommitdiff
path: root/src/analysis/types/proto.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/types/proto.c')
-rw-r--r--src/analysis/types/proto.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/analysis/types/proto.c b/src/analysis/types/proto.c
index aa096d8..4df0552 100644
--- a/src/analysis/types/proto.c
+++ b/src/analysis/types/proto.c
@@ -396,6 +396,7 @@ static char *g_proto_type_to_string(const GProtoType *type, bool include)
{
char *result; /* Valeur à renvoyer */
GDataType *base; /* Version d'instance parente */
+ type_obj_extra *extra; /* Données insérées à modifier */
char *namespace; /* Groupe d'appartenance */
size_t i; /* Boucle de parcours */
char *arg; /* Argument à décrire */
@@ -415,15 +416,25 @@ static char *g_proto_type_to_string(const GProtoType *type, bool include)
base = G_DATA_TYPE(type);
- if (include && base->namespace != NULL)
+ if (include)
{
- namespace = g_data_type_to_string(base->namespace, true);
- if (namespace == NULL) goto error;
+ extra = GET_DATA_TYPE_EXTRA(base);
- result = stradd(result, namespace);
- result = stradd(result, base->ns_sep);
+ g_bit_lock(&extra->lock, HOLE_LOCK_BIT);
- free(namespace);
+ if (base->namespace != NULL)
+ {
+ namespace = g_data_type_to_string(base->namespace, true);
+ if (namespace == NULL) goto error;
+
+ result = strprep(result, extra->ns_sep);
+ result = strprep(result, namespace);
+
+ free(namespace);
+
+ }
+
+ g_bit_unlock(&extra->lock, HOLE_LOCK_BIT);
}