On Fri, May 24, 2019 at 2:48 PM Julia Lawall <[email protected]> wrote:
>
>
>
> On Fri, 24 May 2019, Timur Tabi wrote:
>
> > I'm working on a new script that needs to add a NULL-pointer check if
> > one does not already exist. For example:
> >
> > x = (MYTYPE)MACRO(params);
> >
> > should become
> >
> > x = (MYTYPE)MACRO(params);
> > if (!x) {
> > do_something;
> > }
> >
> > My problem is that I want coccinelle to add the if-check only if it
> > doesn't already exist. So currently I have this:
> >
> > @@
> > type T;
> > expression x;
> > @@
> > x = (T)MACRO(...);
> > +if (x == NULL)
> > +{
> > + status = ERROR;
> > + goto exit;
> > +}
> >
> > How do I make sure that these lines are not added if they already
> > exist? I need to check for "if (x == NULL)" and "if (!x)" variants.
>
> (
> A
> B
> |
> A
> +B
> )
I can't quite get this to work:
func(...) {
<+...
x = (T)MACRO(...);
(
if (x == NULL)
|
+if (x == NULL)
+{
+ goto label;
+}
)
...+>
}
This gives me:
minus: parse error:
File "/home/ttabi/boardobj.cocci", line 12, column 0, charpos = 157
around = '|',
whole content = |
Line 12 is the |
>
> Just put the == NULL variant. An isomorphism will take care of the !x
> case.
>
> julia
>
>
>
>
> > _______________________________________________
> > Cocci mailing list
> > [email protected]
> > https://systeme.lip6.fr/mailman/listinfo/cocci
> >
> _______________________________________________
> Cocci mailing list
> [email protected]
> https://systeme.lip6.fr/mailman/listinfo/cocci
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci