On Mon, Dec 05, 2022 at 08:43:50PM -0500, Jeff King wrote: > On Mon, Dec 05, 2022 at 05:36:25PM -0500, Taylor Blau wrote: > > > On Mon, Dec 05, 2022 at 10:01:11PM +0100, René Scharfe wrote: > > > This rule would turn this code: > > > > > > struct foo *bar = xcalloc(1, sizeof(*bar)); > > > int i; > > > > > > ... into: > > > > > > struct foo *bar; > > > CALLOC(bar); > > > int i; > > > > > > ... which violates the coding guideline to not mix declarations and > > > statements (-Wdeclaration-after-statement). > > > > Yeah, I was wondering about this myself when I wrote this part of the > > Coccinelle patch. > > > > Is there an intelligent way to tell it to put the first statement after > > all declarations? I couldn't find anything after a quick scan of the > > documentation nor our own patches. > > It feels like generating the code as above is not the end of the world. > The most valuable thing that coccinelle is doing here is _finding_ the > location, and telling you "it's supposed to be like this". It is great > when the "this" post-image is perfect and doesn't need further tweaking. I have to agree. If Coccinelle can generate the right output; great. But if it can't, the amount of additional work to reorganize an already generated and mostly correct *.patch from the tool seems minimal by comparison. > But if the compiler then reminds you "hey, you need to go a bit further > manually", that doesn't seem so bad. In other words, I would be happy to > follow that work flow if I introduced a bare xcalloc(). My only worry is > that somebody less experienced with the project (or with C) would get > confused. Agreed. Thanks, Taylor