 afc48a82fa
			
		
	
	
	afc48a82fa
	
	
	
		
			
			Many iterators have the property that the first argument is always bound to a real list element, never NULL. False positives arise for some iterators that do not have this property, or in cases when the loop cursor is reassigned. The latter should only happen when the matched code is on the way to a loop exit (break, goto, or return). Signed-off-by: Nicolas Palix <npalix@diku.dk> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Michal Marek <mmarek@suse.cz>
		
			
				
	
	
		
			58 lines
		
	
	
		
			No EOL
		
	
	
		
			1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			No EOL
		
	
	
		
			1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| /// Many iterators have the property that the first argument is always bound
 | |
| /// to a real list element, never NULL.  False positives arise for some
 | |
| /// iterators that do not have this property, or in cases when the loop
 | |
| /// cursor is reassigned.  The latter should only happen when the matched
 | |
| /// code is on the way to a loop exit (break, goto, or return).
 | |
| ///
 | |
| // Confidence: Moderate
 | |
| // Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
 | |
| // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
 | |
| // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
 | |
| // URL: http://coccinelle.lip6.fr/
 | |
| // Comments:
 | |
| // Options: -no_includes -include_headers
 | |
| 
 | |
| virtual patch
 | |
| 
 | |
| @@
 | |
| iterator I;
 | |
| expression x,E,E1,E2;
 | |
| statement S,S1,S2;
 | |
| @@
 | |
| 
 | |
| I(x,...) { <...
 | |
| (
 | |
| - if (x == NULL && ...) S
 | |
| |
 | |
| - if (x != NULL || ...)
 | |
|   S
 | |
| |
 | |
| - (x == NULL) ||
 | |
|   E
 | |
| |
 | |
| - (x != NULL) &&
 | |
|   E
 | |
| |
 | |
| - (x == NULL && ...) ? E1 :
 | |
|   E2
 | |
| |
 | |
| - (x != NULL || ...) ?
 | |
|   E1
 | |
| - : E2
 | |
| |
 | |
| - if (x == NULL && ...) S1 else
 | |
|   S2
 | |
| |
 | |
| - if (x != NULL || ...)
 | |
|   S1
 | |
| - else S2
 | |
| |
 | |
| + BAD(
 | |
|   x == NULL
 | |
| + )
 | |
| |
 | |
| + BAD(
 | |
|   x != NULL
 | |
| + )
 | |
| )
 | |
|   ...> } |