For example, the following transformation:
- sizeof(s)-1
+ STRLEN(s)
would replace sizeof by STRLEN even in the STRLEN macro definition
itself, which generates following nonsensical patch:
--- src/basic/macro.h
+++ /tmp/cocci-output-8753-b50773-macro.h
@@ -182,7 +182,7 @@ static inline unsigned long ALIGN_POWER2
* Contrary to strlen(), this is a constant expression.
* @x: a string literal.
*/
-#define STRLEN(x) (sizeof(""x"") - 1)
+#define STRLEN(x) (STRLEN("" x ""))
/*
* container_of - cast a member of a structure out to the containing structure
Let's exclude the macro itself from the transformation to avoid this
@@
constant s;
@@
+(
+#define STRLEN
+&
- sizeof(s)-1
+ STRLEN(s)
+)
@@
constant s;
@@
@@
@@
+(
+#define DEBUG_LOGGING
+&
- _unlikely_(log_get_max_level() >= LOG_DEBUG)
+ DEBUG_LOGGING
+)
@@
@@
+(
+#define DEBUG_LOGGING
+&
- log_get_max_level() >= LOG_DEBUG
+ DEBUG_LOGGING
+)
@@
expression a, b;
@@
+(
+#define memzero
+&
- memset(a, 0, b)
+ memzero(a, b)
+)
@@
expression a, b;
@@
+(
+#define memzero
+&
- bzero(a, b)
+ memzero(a, b)
+)