diff options
-rw-r--r-- | tools/d2c/conv/manager.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/tools/d2c/conv/manager.c b/tools/d2c/conv/manager.c index f664beb..aae69c2 100644 --- a/tools/d2c/conv/manager.c +++ b/tools/d2c/conv/manager.c @@ -452,8 +452,39 @@ bool define_conv_func(conv_func *func, int fd, const coding_bits *bits, const co */ if (func->defined) { - // TODO : faire un object_ref() si c'est un objet - //assert(0); + /** + * La question de la propriété d'un opérande se pose si un opérande + * est partagé entre plusieurs propriétaires. + * + * Le second usage de cet opérande, détecté ici, doit conduire à + * une incrémentation de son compteur de références, via un appel à + * g_object_ref(), si une instance GObject est manipulée. + * + * Or ce n'est jusqu'à présent jamais le cas. Les doubles usages sont + * issus de constructions via les fonctions suivantes : + * + * - UInt ; + * - SingleWordVector ; + * - DoubleWordVector. + * + * La mise en place d'une incrémentation des objets est donc reportée + * au moment où elle sera utile. + */ + +#ifndef NDEBUG + + if (!func->is_expr) + { + if (strcmp(func->name, "UInt") != 0 + && strcmp(func->name, "SingleWordVector") != 0 + && strcmp(func->name, "DoubleWordVector") != 0) + { + assert(false); + } + + } + +#endif return true; |