On 12/20/2011 11:24 PM, Julia Lawall wrote:For this one, I made quite a number of changes, some of which required
fixing a bug in Coccinelle... I will try to release the bug fix
shortly. In general, though, I have added ... between the two tests. I
also got rid of the focus on ifs in the org and report rules.
Ok, thanks. Was the removing of the ifs in related to the Coccinelle bug? I
always get an error if I start a match with a conditional.
--julia
virtual context
virtual patch
virtual org
virtual report
// Since the logical or operator by itself is not commutative we need
rules for
// both cases as well as for their De Morgan equivalents.
@depends on context@
expression x;
@@
* IS_ERR(x)
|| ... ||
* x == NULL
@depends on context@
expression x;
@@
* x == NULL
|| ... ||
* IS_ERR(x)
@depends on context@
expression x;
@@
* !IS_ERR(x)
&& ... &&
* x != NULL
@depends on context@
expression x;
@@
* x != NULL
&& ... &&
* !IS_ERR(x)
@depends on patch@
expression x;
@@
- IS_ERR(x)
+ IS_ERR_OR_NULL(x)
|| ...
- || x == NULL
@depends on patch@
expression x;
@@
- x == NULL
+ IS_ERR_OR_NULL(x)
|| ...
- || IS_ERR(x)
@depends on patch@
expression x;
@@
- !IS_ERR(x)
+ !IS_ERR_OR_NULL(x)
&& ...
- && x != NULL
@depends on patch@
expression x;
@@
- x != NULL
+ !IS_ERR_OR_NULL(x)
&& ...
- && !IS_ERR(x)
@r depends on org || report@
expression x;
position p;
@@
(
IS_ERR@p(x) || ... || x == NULL
|
x == NULL || ... || IS_ERR@p(x)
|
!IS_ERR@p(x) && ... && x != NULL
|
x != NULL && ... && !IS_ERR@p(x)
)
@script:python depends on org@
p << r.p;
x << r.x;
@@
msg="IS_ERR_OR_NULL can be used with %s" % (x)
msg_safe=msg.replace("[","@(").replace("]",")")
coccilib.org.print_todo(p[0], msg_safe)
@script:python depends on report@
p << r.p;
x << r.x;
@@
msg="IS_ERR_OR_NULL can be used with %s" % (x)
coccilib.report.print_report(p[0], msg)