| /// sizeof when applied to a pointer typed expression gives the size of | 
 | /// the pointer | 
 | /// | 
 | // Confidence: High | 
 | // Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2. | 
 | // Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2. | 
 | // URL: http://coccinelle.lip6.fr/ | 
 | // Comments: | 
 | // Options: --no-includes --include-headers | 
 |  | 
 | virtual org | 
 | virtual report | 
 | virtual context | 
 | virtual patch | 
 |  | 
 | @depends on patch@ | 
 | expression *x; | 
 | expression f; | 
 | expression i; | 
 | type T; | 
 | @@ | 
 |  | 
 | ( | 
 | x = <+... sizeof( | 
 | - x | 
 | + *x | 
 |    ) ...+> | 
 | | | 
 | f(...,(T)(x),...,sizeof( | 
 | - x | 
 | + *x | 
 |    ),...) | 
 | | | 
 | f(...,sizeof( | 
 | - x | 
 | + *x | 
 |    ),...,(T)(x),...) | 
 | | | 
 | f(...,(T)(x),...,i*sizeof( | 
 | - x | 
 | + *x | 
 |    ),...) | 
 | | | 
 | f(...,i*sizeof( | 
 | - x | 
 | + *x | 
 |    ),...,(T)(x),...) | 
 | ) | 
 |  | 
 | @r depends on !patch@ | 
 | expression *x; | 
 | expression f; | 
 | expression i; | 
 | position p; | 
 | type T; | 
 | @@ | 
 |  | 
 | ( | 
 | *x = <+... sizeof@p(x) ...+> | 
 | | | 
 | *f(...,(T)(x),...,sizeof@p(x),...) | 
 | | | 
 | *f(...,sizeof@p(x),...,(T)(x),...) | 
 | | | 
 | *f(...,(T)(x),...,i*sizeof@p(x),...) | 
 | | | 
 | *f(...,i*sizeof@p(x),...,(T)(x),...) | 
 | ) | 
 |  | 
 | @script:python depends on org@ | 
 | p << r.p; | 
 | @@ | 
 |  | 
 | cocci.print_main("application of sizeof to pointer",p) | 
 |  | 
 | @script:python depends on report@ | 
 | p << r.p; | 
 | @@ | 
 |  | 
 | msg = "ERROR: application of sizeof to pointer" | 
 | coccilib.report.print_report(p[0],msg) |