• [^] # Re: Hmm :/

    Posté par (site web personnel) . En réponse au journal Entretient du noyau Linux. Évalué à 1.

    Oué enfin je suis pas non plus un hacker fou pro du C :)
    Autant je comprends à peu près l'intérêt lorsqu'on gère une pile (effectivement lorsque les allocations/libérations sont différentes), mais parofis je captes pas trop l'intérêt (notamment lorsque les goto ne s'enchaîne pas :
    exemple :
    fork_out:
    1142 if (retval)
    1143 return ERR_PTR(retval);
    1144 return p;

    pourquoi ne pas mettre ca dans une fonction ? à mon avis le compilateur la inlinera très bien.

    sinon de manière plus générale j'ai envie de faire :

    gestion_erreur(code){
    switch(code){
    case ERROR_ALLOC_TRUC:
    do_stuff();
    case ...

    }
    }

    celà cache implicitement des gotos mais c'est déjà plus élégant que la suite :

    ad_fork_cleanup_namespace:
    1147 exit_namespace(p);
    1148 bad_fork_cleanup_mm:
    1149 if (p->mm)
    1150 mmput(p->mm);
    1151 bad_fork_cleanup_signal:
    1152 exit_signal(p);
    1153 bad_fork_cleanup_sighand:
    1154 exit_sighand(p);
    1155 bad_fork_cleanup_fs:
    1156 exit_fs(p); /* blocking */
    1157 bad_fork_cleanup_files:
    1158 exit_files(p); /* blocking */
    1159 bad_fork_cleanup_semundo:
    1160 exit_sem(p);
    1161 bad_fork_cleanup_audit:
    1162 audit_free(p);
    1163 bad_fork_cleanup_security:
    1164 security_task_free(p);
    1165 bad_fork_cleanup_policy: