mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
coccinelle: ignore function transformations causing recursion
For example, following transformation: - isempty(s) ? NULL : s + empty_to_null(s) would get applied to the empty_to_null function itself as well, causing an infinite recursion, like: --- src/basic/string-util.h +++ /tmp/cocci-output-307-9f76e6-string-util.h @@ -50,11 +50,11 @@ static inline bool isempty(const char *p } static inline const char *empty_to_null(const char *p) { - return isempty(p) ? NULL : p; + return empty_to_null(p); } Let's avoid that by checking the current match position
This commit is contained in:
parent
33af88cf70
commit
60d9959dd8
@ -1,5 +1,8 @@
|
||||
@@
|
||||
/* Avoid running this transformation on the empty_to_null function itself */
|
||||
position p : script:python() { p[0].current_element != "empty_to_null" };
|
||||
expression s;
|
||||
@@
|
||||
- isempty(s) ? NULL : s
|
||||
|
||||
- isempty@p(s) ? NULL : s
|
||||
+ empty_to_null(s)
|
||||
|
@ -1,6 +1,8 @@
|
||||
@@
|
||||
expression p;
|
||||
/* Avoid running this transformation on the mfree function itself */
|
||||
position p : script:python() { p[0].current_element != "mfree" };
|
||||
expression e;
|
||||
@@
|
||||
- free(p);
|
||||
- free@p(e);
|
||||
- return NULL;
|
||||
+ return mfree(p);
|
||||
+ return mfree(e);
|
||||
|
@ -1,48 +1,60 @@
|
||||
@@
|
||||
/* Avoid running this transformation on the strempty function itself */
|
||||
position p : script:python() { p[0].current_element != "strempty" };
|
||||
expression s;
|
||||
@@
|
||||
- s ?: ""
|
||||
(
|
||||
- s@p ?: ""
|
||||
+ strempty(s)
|
||||
@@
|
||||
expression s;
|
||||
@@
|
||||
- s ? s : ""
|
||||
|
|
||||
- s@p ? s : ""
|
||||
+ strempty(s)
|
||||
)
|
||||
|
||||
@@
|
||||
position p : script:python() { p[0].current_element != "strempty" };
|
||||
expression s;
|
||||
@@
|
||||
- if (!s)
|
||||
- if (!s@p)
|
||||
- s = "";
|
||||
+ s = strempty(s);
|
||||
|
||||
@@
|
||||
position p : script:python() { p[0].current_element != "strnull" };
|
||||
expression s;
|
||||
@@
|
||||
- s ?: "(null)"
|
||||
(
|
||||
- s@p ?: "(null)"
|
||||
+ strnull(s)
|
||||
@@
|
||||
expression s;
|
||||
@@
|
||||
- s ? s : "(null)"
|
||||
|
|
||||
- s@p ? s : "(null)"
|
||||
+ strnull(s)
|
||||
)
|
||||
|
||||
@@
|
||||
position p : script:python() { p[0].current_element != "strnull" };
|
||||
expression s;
|
||||
@@
|
||||
- if (!s)
|
||||
- if (!s@p)
|
||||
- s = "(null)";
|
||||
+ s = strnull(s);
|
||||
|
||||
@@
|
||||
position p : script:python() { p[0].current_element != "strna" };
|
||||
expression s;
|
||||
@@
|
||||
- s ?: "n/a"
|
||||
(
|
||||
- s@p ?: "n/a"
|
||||
+ strna(s)
|
||||
@@
|
||||
expression s;
|
||||
@@
|
||||
- s ? s : "n/a"
|
||||
|
|
||||
- s@p ? s : "n/a"
|
||||
+ strna(s)
|
||||
)
|
||||
|
||||
@@
|
||||
position p : script:python() { p[0].current_element != "strna" };
|
||||
expression s;
|
||||
@@
|
||||
- if (!s)
|
||||
- if (!s@p)
|
||||
- s = "n/a";
|
||||
+ s = strna(s);
|
||||
|
Loading…
Reference in New Issue
Block a user