mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
util: optimize free_and_strdup() if NOP
Under the assumption that strcmp() is cheaper than memory allocation, let's avoid the allocation, if the new value is identical to the old.
This commit is contained in:
parent
27023c0ef5
commit
4b64536ee7
@ -5682,6 +5682,9 @@ int free_and_strdup(char **p, const char *s) {
|
||||
/* Replaces a string pointer with an strdup()ed new string,
|
||||
* possibly freeing the old one. */
|
||||
|
||||
if (streq_ptr(*p, s))
|
||||
return 0;
|
||||
|
||||
if (s) {
|
||||
t = strdup(s);
|
||||
if (!t)
|
||||
@ -5692,7 +5695,7 @@ int free_and_strdup(char **p, const char *s) {
|
||||
free(*p);
|
||||
*p = t;
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sethostname_idempotent(const char *s) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user