• # Simplification

    Posté par . En réponse au journal Genèse d'un journal. Évalué à 3.

    Salut,

    Je suis tout à fait d'accord sur le fait que les retours des fonctions d'allocation doivent être vérifiés. Au programmeur de décidé ensuite de l'action à effectuer en cas d'échec de ces dernières (un simple appel à exit pour un programme non critique par exemple).

    Je notes simplement, comme Jérôme Flesch, que le code pourrait se passer d'un appel à malloc en utilisant simplement une variable de type char pour le premier appel à snprintf. Je remarque également que le retour de snprintf n'est pas vérifié (il peut être négatif ou nul) et que l'espace pour le caractère de fin de chaîne a été oublié.

    {
     char tmp;
     int size = snprintf(&tmp, 1, /* ... */);
     if (size <= 0)
     ; /* quit */
     char * str = malloc(size + 1);
     if (str == NULL)
     ; /* quit */
     /* ... */
    }
    
    

    Avant de proposer une optimisation, lire la page de manuel n'est pas du luxe

    Je suis d'accord sur ce point également, mais dans ce cas ci il s'agit d'un comportement non conforme au standard donc bon, je ne me retournerais personnellement pas dessus.