diff --git a/admin/ChangeLog b/admin/ChangeLog index ec6448dbeee..44856f4b449 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,12 @@ +2012-06-24 Dmitry Antipov + + First Coccinelle semantic patch. + * coccinelle: New subdirectory + * coccinelle/README: Documentation stub. + * coccinelle/vector_contents.cocci: Semantic patch to replace direct + access to `contents' member of Lisp_Vector objects with AREF and ASET + where appropriate. + 2012-06-22 Paul Eggert Support higher-resolution time stamps (Bug#9000). diff --git a/admin/coccinelle/README b/admin/coccinelle/README new file mode 100644 index 00000000000..48a88dbc8d8 --- /dev/null +++ b/admin/coccinelle/README @@ -0,0 +1,3 @@ +This directory contains semantic patches for Coccinelle, a program matching +and transformation tool for programs written in C. For more details, see +http://coccinelle.lip6.fr. diff --git a/admin/coccinelle/vector_contents.cocci b/admin/coccinelle/vector_contents.cocci new file mode 100644 index 00000000000..beebc2d2089 --- /dev/null +++ b/admin/coccinelle/vector_contents.cocci @@ -0,0 +1,16 @@ +// Avoid direct access to `contents' member of +// Lisp_Vector, use AREF and ASET where possible. +@expression@ +identifier I1, I2; +expression E1, E2; +@@ +( +- XVECTOR (I1)->contents[I2++] = E1 ++ ASET (I1, I2, E1), I2++ +| +- XVECTOR (I1)->contents[E1] = E2 ++ ASET (I1, E1, E2) +| +-XVECTOR (I1)->contents[E1] ++AREF (I1, E1) +)