diff options
Diffstat (limited to 'src/analysis/types/proto.c')
-rw-r--r-- | src/analysis/types/proto.c | 23 |
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); } |