qemu-arm
[Top][All Lists]
Advanced

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

Re: [Qemu-arm] [Qemu-devel] [PATCH] Use error_fatal to simplify obvious


From: Marcel Apfelbaum
Subject: Re: [Qemu-arm] [Qemu-devel] [PATCH] Use error_fatal to simplify obvious fatal errors
Date: Thu, 10 Dec 2015 15:58:57 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

On 12/10/2015 02:34 PM, Markus Armbruster wrote:
Marcel Apfelbaum <address@hidden> writes:

On 12/10/2015 12:19 PM, Markus Armbruster wrote:
Done with this admittedly crude Coccinelle semantic patch with manual
burial of dead Error * variables squashed in:

      @@
      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);


That's so cool!

I'm afraid my sledgehammer approach to Coccinelle would make its
inventors wince...

Isn't it the time to have our own Coccinelle directory
with scripts like this?

Could do that if there's interest.

                         And to make them part of make check?

I'm afraid that's not practical.  spatch solves a difficult problem, and
takes its own sweet time to do it.

So it takes a long time to run. We could make it depend on an environment 
variable,
so at least the maintainers will run it :)

My point is, now we *could* have a guarantee that if anyone uses the old
way, we can catch it in time. It can be easily lost in the review process.

Anyway, it was only a thought.
Thanks,
Marcel



Is a pity to have them lost into a git comment...




reply via email to

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