| 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); |