24.09.2019 0:29, Eric Blake wrote: > On 9/23/19 3:05 PM, Eric Blake wrote: > >> Does running this Coccinelle script 2 times in a row add a second >> ERRP_FUNCTION_BEGIN() line? We want it to be idempotent (no changes on >> a second run). (Admittedly, I did not actually test that yet). Also, I >> don't know if this can be tweaked to avoid adding the line to a function >> with an empty body, maybe: >> >> fn(..., Error **errp, ...) >> { >> + ERRP_FUNCTION_BEGIN(); >> ... >> }
No, we need exactly this to match not only empty functions. But with ... it matches empty functions as well. > > Also untested: > > fn(..., Error **errp, ...) > { > ( > | > ERRP_FUNCTION_BEGIN(); > ... > | > + ERRP_FUNCTION_BEGIN() > ... > ) > } Seems, that doesn't work.. It says: 12: no available token to attach to where 12 is line "+ ERRP_FUNCTION_BEGIN()" So, I tend to just add chunk to remove duplicated invocation :) > > >> Overall, the script makes sense in my reading (but no idea if it >> actually catches everything we want, or if it missed something). > > Having spot-checked 7, it definitely misses cases where it was supposed > to add ERRP_FUNCTION_BEGIN(). > -- Best regards, Vladimir