| Nicolas Palix | 998f552 | 2010-08-24 17:39:05 +0200 | [diff] [blame] | 1 | /// Use kstrdup rather than duplicating its implementation | 
|  | 2 | /// | 
|  | 3 | // Confidence: High | 
|  | 4 | // Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2. | 
|  | 5 | // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2. | 
|  | 6 | // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2. | 
|  | 7 | // URL: http://coccinelle.lip6.fr/ | 
|  | 8 | // Comments: | 
|  | 9 | // Options: -no_includes -include_headers | 
|  | 10 |  | 
|  | 11 | virtual patch | 
|  | 12 |  | 
|  | 13 | @@ | 
|  | 14 | expression from,to; | 
|  | 15 | expression flag,E1,E2; | 
|  | 16 | statement S; | 
|  | 17 | @@ | 
|  | 18 |  | 
|  | 19 | -  to = kmalloc(strlen(from) + 1,flag); | 
|  | 20 | +  to = kstrdup(from, flag); | 
|  | 21 | ... when != \(from = E1 \| to = E1 \) | 
|  | 22 | if (to==NULL || ...) S | 
|  | 23 | ... when != \(from = E2 \| to = E2 \) | 
|  | 24 | -  strcpy(to, from); | 
|  | 25 |  | 
|  | 26 | @@ | 
|  | 27 | expression x,from,to; | 
|  | 28 | expression flag,E1,E2,E3; | 
|  | 29 | statement S; | 
|  | 30 | @@ | 
|  | 31 |  | 
|  | 32 | -   x = strlen(from) + 1; | 
|  | 33 | ... when != \( x = E1 \| from = E1 \) | 
|  | 34 | -   to = \(kmalloc\|kzalloc\)(x,flag); | 
|  | 35 | +   to = kstrdup(from, flag); | 
|  | 36 | ... when != \(x = E2 \| from = E2 \| to = E2 \) | 
|  | 37 | if (to==NULL || ...) S | 
|  | 38 | ... when != \(x = E3 \| from = E3 \| to = E3 \) | 
|  | 39 | -   memcpy(to, from, x); |