Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.8.
  1/// These iterators only exit normally when the loop cursor is NULL, so there
  2/// is no point to call of_node_put on the final value.
  3///
  4// Confidence: High
  5// Copyright: (C) 2010-2012 Nicolas Palix.  GPLv2.
  6// Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6.  GPLv2.
  7// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6.  GPLv2.
  8// URL: http://coccinelle.lip6.fr/
  9// Comments:
 10// Options: --no-includes --include-headers
 11
 12virtual patch
 13virtual context
 14virtual org
 15virtual report
 16
 17@depends on patch@
 18iterator name for_each_node_by_name;
 19expression np,E;
 20identifier l;
 21@@
 22
 23for_each_node_by_name(np,...) {
 24  ... when != break;
 25      when != goto l;
 26}
 27... when != np = E
 28- of_node_put(np);
 29
 30@depends on patch@
 31iterator name for_each_node_by_type;
 32expression np,E;
 33identifier l;
 34@@
 35
 36for_each_node_by_type(np,...) {
 37  ... when != break;
 38      when != goto l;
 39}
 40... when != np = E
 41- of_node_put(np);
 42
 43@depends on patch@
 44iterator name for_each_compatible_node;
 45expression np,E;
 46identifier l;
 47@@
 48
 49for_each_compatible_node(np,...) {
 50  ... when != break;
 51      when != goto l;
 52}
 53... when != np = E
 54- of_node_put(np);
 55
 56@depends on patch@
 57iterator name for_each_matching_node;
 58expression np,E;
 59identifier l;
 60@@
 61
 62for_each_matching_node(np,...) {
 63  ... when != break;
 64      when != goto l;
 65}
 66... when != np = E
 67- of_node_put(np);
 68
 69// ----------------------------------------------------------------------
 70
 71@r depends on !patch forall@
 72//iterator name for_each_node_by_name;
 73//iterator name for_each_node_by_type;
 74//iterator name for_each_compatible_node;
 75//iterator name for_each_matching_node;
 76expression np,E;
 77identifier l;
 78position p1,p2;
 79@@
 80
 81(
 82*for_each_node_by_name@p1(np,...)
 83{
 84  ... when != break;
 85      when != goto l;
 86}
 87|
 88*for_each_node_by_type@p1(np,...)
 89{
 90  ... when != break;
 91      when != goto l;
 92}
 93|
 94*for_each_compatible_node@p1(np,...)
 95{
 96  ... when != break;
 97      when != goto l;
 98}
 99|
100*for_each_matching_node@p1(np,...)
101{
102  ... when != break;
103      when != goto l;
104}
105)
106... when != np = E
107* of_node_put@p2(np);
108
109@script:python depends on org@
110p1 << r.p1;
111p2 << r.p2;
112@@
113
114cocci.print_main("unneeded of_node_put",p2)
115cocci.print_secs("iterator",p1)
116
117@script:python depends on report@
118p1 << r.p1;
119p2 << r.p2;
120@@
121
122msg = "ERROR: of_node_put not needed after iterator on line %s" % (p1[0].line)
123coccilib.report.print_report(p2[0], msg)