qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal


From: Eduardo Habkost
Subject: Re: [Qemu-arm] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
Date: Mon, 14 Dec 2015 14:55:37 -0200
User-agent: Mutt/1.5.23 (2014-03-12)

On Thu, Dec 10, 2015 at 05:29:14PM +0100, Markus Armbruster wrote:
> Done with this admittedly crude Coccinelle semantic patch:
> 

Reviewed-by: Eduardo Habkost <address@hidden>

You can rewrite the semantic patch as:

    @@
    type T;
    identifier FUN, RET;
    expression list ARGS;
    expression ERR, EC;
    @@
    (
    -    T RET = FUN(ARGS, &ERR);
    +    T RET = FUN(ARGS, &error_fatal);
    |
    -    RET = FUN(ARGS, &ERR);
    +    RET = FUN(ARGS, &error_fatal);
    |
    -    FUN(ARGS, &ERR);
    +    FUN(ARGS, &error_fatal);
    )
    -    if (ERR != NULL) {
    -        error_report_err(ERR);
    -        exit(EC);
    -    }


Coccinelle seems to have some magic to make "LIST," also match
with an empty list.

>     @@
>     identifier FUN;
>     expression ERR, EC;
>     @@
>     -    FUN(&ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    FUN(&error_fatal);
>     @@
>     identifier FUN;
>     expression ARG1, ERR, EC;
>     @@
>     -    FUN(ARG1, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    FUN(ARG1, &error_fatal);
>     @@
>     identifier FUN;
>     expression ARG1, ARG2, ERR, EC;
>     @@
>     -    FUN(ARG1, ARG2, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    FUN(ARG1, ARG2, &error_fatal);
>     @@
>     identifier FUN;
>     expression ARG1, ARG2, ARG3, ERR, EC;
>     @@
>     -    FUN(ARG1, ARG2, ARG3, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    FUN(ARG1, ARG2, ARG3, &error_fatal);
>     @@
>     identifier FUN;
>     expression RET, ERR, EC;
>     @@
>     -    RET = FUN(&ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    RET = FUN(&error_fatal);
>     @@
>     identifier FUN;
>     expression RET, ARG1, ERR, EC;
>     @@
>     -    RET = FUN(ARG1, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    RET = FUN(ARG1, &error_fatal);
>     @@
>     identifier FUN;
>     expression RET, ARG1, ARG2, ERR, EC;
>     @@
>     -    RET = FUN(ARG1, ARG2, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    RET = FUN(ARG1, ARG2, &error_fatal);
>     @@
>     identifier FUN;
>     expression RET, ARG1, ARG2, ARG3, ERR, EC;
>     @@
>     -    RET = FUN(ARG1, ARG2, ARG3, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    RET = FUN(ARG1, ARG2, ARG3, &error_fatal);
>     @@
>     type T;
>     identifier FUN, RET;
>     expression ERR, EC;
>     @@
>     -    T RET = FUN(&ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    T RET = FUN(&error_fatal);
>     @@
>     type T;
>     identifier FUN, RET;
>     expression ARG1, ERR, EC;
>     @@
>     -    T RET = FUN(ARG1, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    T RET = FUN(ARG1, &error_fatal);
>     @@
>     type T;
>     identifier FUN, RET;
>     expression ARG1, ARG2, ERR, EC;
>     @@
>     -    T RET = FUN(ARG1, ARG2, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    T RET = FUN(ARG1, ARG2, &error_fatal);
>     @@
>     type T;
>     identifier FUN, RET;
>     expression ARG1, ARG2, ARG3, ERR, EC;
>     @@
>     -    T RET = FUN(ARG1, ARG2, ARG3, &ERR);
>     -    if (ERR != NULL) {
>     -        error_report_err(ERR);
>     -        exit(EC);
>     -    }
>     +    T RET = FUN(ARG1, ARG2, ARG3, &error_fatal);
> 
> This leaves dead Error * variables behind, cleaned up manually.
> 

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]