1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
// Use the macro ARRAY_SIZE when possible
//
// Confidence: High
// Copyright: (C) Gilles Muller, Julia Lawall, EMN, INRIA, DIKU. GPLv2.
// URL: http://coccinelle.lip6.fr/rules/array.html
// Options: -I ... -all_includes can give more complete results
virtual org
virtual patch
@i@
@@
#include <linux/kernel.h>
/////////////////////////////////////
/////////////////////////////////////
@depends on i && patch && !org@
type T;
T[] E;
@@
- (sizeof(E)/sizeof(*E))
+ ARRAY_SIZE(E)
@depends on i && patch && !org@
type T;
T[] E;
@@
- (sizeof(E)/sizeof(E[...]))
+ ARRAY_SIZE(E)
@depends on i && patch && !org@
type T;
T[] E;
@@
- (sizeof(E)/sizeof(T))
+ ARRAY_SIZE(E)
@n_patch depends on patch && !org@
identifier AS,E;
@@
- #define AS(E) ARRAY_SIZE(E)
@ depends on patch && !org@
expression E;
identifier n_patch.AS;
@@
- AS(E)
+ ARRAY_SIZE(E)
/////////////////////////////////////
/////////////////////////////////////
@arr_ptr depends on i && !patch && org@
type T;
T[] E;
position p;
@@
(sizeof(E@p)/sizeof(*E))
@arr_tab depends on i && !patch && org@
type T;
T[] E;
position p;
@@
(sizeof(E@p)/sizeof(E[...]))
@arr_typ depends on i && !patch && org@
type T;
T[] E;
position p;
@@
(sizeof(E@p)/sizeof(T))
@n_org depends on !patch && org@
identifier AS,E;
@@
#define AS(E) ARRAY_SIZE(E)
@arr_def depends on !patch && org@
expression E;
identifier n_org.AS;
position p;
@@
AS@p(E)
@script:python@
p << arr_ptr.p;
e << arr_ptr.E;
@@
cocci.print_main(e,p)
@script:python@
p << arr_tab.p;
e << arr_tab.E;
@@
cocci.print_main(e,p)
@script:python@
p << arr_typ.p;
e << arr_typ.E;
@@
cocci.print_main(e,p)
@script:python@
p << arr_def.p;
e << arr_def.E;
@@
cocci.print_main(e,p)
|