Salut à tous,
Voilà, j’ai un petit problème avec GCC, et plus globalement le standard C99. J’ai un appel de fonction qui ressemble à ceci :
FuError ret = fu_memory_resize ((void **) &ht->array, size * sizeof (FuHashNode *));
C’est un simple appel à realloc déguisé, en fait. La fonction retourne si oui ou non il y a eu erreur, et si non, elle place l’adresse dans le pointeur pointé par le premier argument.
Le code fonctionne parfaitement, le problème survient quand j’active le flag -O2. En fait, j’ai un avertissement tout con :
Le problème c’est que l’aliasing n’est pas correct selon le standard C99… Mais je ne vois pas comment faire autrement. Le coup de l’union (etc) pour ce genre de problème ne s’applique pas ici. La fonction ne fait que modifier un pointeur, qui peut être de n’importe quel type.
Je peux bien évidemment passer à GCC le flag -fno-strict-aliasing mais ça me plait moyennement… J’aimerais si possible modifier le code de façon à faire disparaitre l’avertissement de GCC.
Alors, voilà, je bloque donc si vous avez une solution, je suis preneur… Si non tant pis mais bon… Enfin voilà