tree-wide: introduce mfree()

Pretty trivial helper which wraps free() but returns NULL, so we can
simplify this:
        free(foobar);
        foobar = NULL;
to this:
        foobar = mfree(foobar);
This commit is contained in:
David Herrmann 2015-07-31 19:56:38 +02:00
parent b2a0ac5e5b
commit 97b11eedff
25 changed files with 64 additions and 119 deletions

View file

@ -467,8 +467,7 @@ int copy_xattr(int fdf, int fdt) {
sza *= 2;
free(bufa);
bufa = NULL;
bufa = mfree(bufa);
}
p = bufa;
@ -491,8 +490,7 @@ int copy_xattr(int fdf, int fdt) {
if (m < 0) {
if (errno == ERANGE) {
szb *= 2;
free(bufb);
bufb = NULL;
bufb = mfree(bufb);
continue;
}

View file

@ -84,6 +84,11 @@ bool streq_ptr(const char *a, const char *b) _pure_;
#define malloc0(n) (calloc((n), 1))
static inline void *mfree(void *memory) {
free(memory);
return NULL;
}
static inline const char* yes_no(bool b) {
return b ? "yes" : "no";
}

View file

@ -586,10 +586,8 @@ static int file_load(Policy *p, const char *path) {
case POLICY_ITEM_SEND:
case POLICY_ITEM_RECV:
if (streq(name, "*")) {
free(name);
name = NULL;
}
if (streq(name, "*"))
name = mfree(name);
break;

View file

@ -3508,9 +3508,7 @@ static int load_from_path(Unit *u, const char *path) {
r = open_follow(&filename, &f, symlink_names, &id);
if (r < 0) {
free(filename);
filename = NULL;
filename = mfree(filename);
if (r != -ENOENT)
return r;
}
@ -3534,9 +3532,7 @@ static int load_from_path(Unit *u, const char *path) {
r = open_follow(&filename, &f, symlink_names, &id);
if (r < 0) {
free(filename);
filename = NULL;
filename = mfree(filename);
if (r != -ENOENT)
return r;

View file

@ -1844,13 +1844,11 @@ finish:
arg_default_rlimit[j] = NULL;
}
free(arg_default_unit);
arg_default_unit = NULL;
arg_default_unit = mfree(arg_default_unit);
free_join_controllers();
strv_free(arg_default_environment);
arg_default_environment = NULL;
arg_default_environment = strv_free(arg_default_environment);
set_free(arg_syscall_archs);
arg_syscall_archs = NULL;

View file

@ -217,8 +217,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e,
break;
}
free(n);
n = NULL;
n = mfree(n);
}
}

View file

@ -333,8 +333,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
/* If the description string is simply the
* volume name, then let's not show this
* twice */
free(description);
description = NULL;
description = mfree(description);
}
if (mount_point && description)

View file

@ -715,10 +715,8 @@ static int parse_argv(int argc, char *argv[]) {
path_kill_slashes(arg_root);
if (path_equal(arg_root, "/")) {
free(arg_root);
arg_root = NULL;
}
if (path_equal(arg_root, "/"))
arg_root = mfree(arg_root);
break;

View file

@ -592,8 +592,7 @@ static int dkr_pull_pull_layer_v2(DkrPull *i) {
i->current_ancestry++;
free(path);
path = NULL;
path = mfree(path);
}
log_info("Pulling layer %s...", layer);
@ -652,8 +651,7 @@ static int dkr_pull_pull_layer(DkrPull *i) {
i->current_ancestry++;
free(path);
path = NULL;
path = mfree(path);
}
log_info("Pulling layer %s...", layer);

View file

@ -263,8 +263,7 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) {
if (r < 0)
return r;
free(lang);
lang = NULL;
lang = mfree(lang);
}
if (with_language) {

View file

@ -587,8 +587,7 @@ static int save_core(sd_journal *j, int fd, char **path, bool *unlink_temp) {
if (filename && access(filename, R_OK) < 0) {
log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
"File %s is not readable: %m", filename);
free(filename);
filename = NULL;
filename = mfree(filename);
}
if (filename && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) {

View file

@ -1259,8 +1259,7 @@ static int add_units(sd_journal *j) {
}
}
strv_free(patterns);
patterns = NULL;
patterns = strv_free(patterns);
STRV_FOREACH(i, arg_user_units) {
_cleanup_free_ char *u = NULL;

View file

@ -861,8 +861,7 @@ int bus_match_parse(
if (r < 0)
goto fail;
free(value);
value = NULL;
value = mfree(value);
} else
u = 0;

View file

@ -462,9 +462,8 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
}
}
free(argument_type);
free(argument_direction);
argument_type = argument_direction = NULL;
argument_type = mfree(argument_type);
argument_direction = mfree(argument_direction);
}
state = STATE_METHOD;
@ -604,8 +603,7 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
if (!strextend(&context->member_signature, argument_type, NULL))
return log_oom();
free(argument_type);
argument_type = NULL;
argument_type = mfree(argument_type);
}
state = STATE_SIGNAL;

View file

@ -44,9 +44,8 @@ int main(int argc, char *argv[]) {
printf("Local Addresses:\n");
print_local_addresses(a, (unsigned) n);
free(a);
a = mfree(a);
a = NULL;
n = local_gateways(NULL, 0, AF_UNSPEC, &a);
assert_se(n >= 0);

View file

@ -725,15 +725,13 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
log_warning("Existing logind session ID %s used by new audit session, ignoring", id);
audit_id = 0;
free(id);
id = NULL;
id = mfree(id);
}
}
if (!id) {
do {
free(id);
id = NULL;
id = mfree(id);
if (asprintf(&id, "c%lu", ++m->session_counter) < 0)
return -ENOMEM;
@ -2355,8 +2353,7 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error
return r;
do {
free(id);
id = NULL;
id = mfree(id);
if (asprintf(&id, "%lu", ++m->inhibit_counter) < 0)
return -ENOMEM;

View file

@ -309,8 +309,7 @@ static void custom_mount_free_all(void) {
strv_free(m->lower);
}
free(arg_custom_mounts);
arg_custom_mounts = NULL;
arg_custom_mounts = mfree(arg_custom_mounts);
arg_n_custom_mounts = 0;
}
@ -561,8 +560,7 @@ static int parse_argv(int argc, char *argv[]) {
case 'M':
if (isempty(optarg)) {
free(arg_machine);
arg_machine = NULL;
arg_machine = mfree(arg_machine);
} else {
if (!machine_name_is_valid(optarg)) {
log_error("Invalid machine name: %s", optarg);

View file

@ -464,8 +464,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
}
}
free(addresses);
addresses = NULL;
addresses = mfree(addresses);
n_addresses = local_gateways(NULL, 0, AF_UNSPEC, &addresses);
if (n_addresses > 0) {

View file

@ -333,8 +333,7 @@ int config_parse(const char *unit,
return -ENOMEM;
}
free(continuation);
continuation = NULL;
continuation = mfree(continuation);
p = c;
} else
p = l;

View file

@ -3327,8 +3327,7 @@ static void print_status_info(
if (! dir || last) {
printf(dir ? " " : " Drop-In: ");
free(dir);
dir = NULL;
dir = mfree(dir);
if (path_get_parent(*dropin, &dir) < 0) {
log_oom();

View file

@ -704,8 +704,7 @@ static int write_files(void) {
goto finish;
}
free(group_tmp);
group_tmp = NULL;
group_tmp = mfree(group_tmp);
}
if (gshadow) {
if (rename(gshadow_tmp, gshadow_path) < 0) {
@ -713,8 +712,7 @@ static int write_files(void) {
goto finish;
}
free(gshadow_tmp);
gshadow_tmp = NULL;
gshadow_tmp = mfree(gshadow_tmp);
}
}
@ -724,8 +722,7 @@ static int write_files(void) {
goto finish;
}
free(passwd_tmp);
passwd_tmp = NULL;
passwd_tmp = mfree(passwd_tmp);
}
if (shadow) {
if (rename(shadow_tmp, shadow_path) < 0) {
@ -733,8 +730,7 @@ static int write_files(void) {
goto finish;
}
free(shadow_tmp);
shadow_tmp = NULL;
shadow_tmp = mfree(shadow_tmp);
}
r = 0;
@ -1410,10 +1406,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify name */
if (isempty(name) || streq(name, "-")) {
free(name);
name = NULL;
}
if (isempty(name) || streq(name, "-"))
name = mfree(name);
if (name) {
r = specifier_printf(name, specifier_table, NULL, &resolved_name);
@ -1429,10 +1423,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify id */
if (isempty(id) || streq(id, "-")) {
free(id);
id = NULL;
}
if (isempty(id) || streq(id, "-"))
id = mfree(id);
if (id) {
r = specifier_printf(id, specifier_table, NULL, &resolved_id);
@ -1443,10 +1435,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify description */
if (isempty(description) || streq(description, "-")) {
free(description);
description = NULL;
}
if (isempty(description) || streq(description, "-"))
description = mfree(description);
if (description) {
if (!valid_gecos(description)) {
@ -1456,10 +1446,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify home */
if (isempty(home) || streq(home, "-")) {
free(home);
home = NULL;
}
if (isempty(home) || streq(home, "-"))
home = mfree(home);
if (home) {
if (!valid_home(home)) {

View file

@ -714,45 +714,38 @@ static void test_cunescape(void) {
assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", 0, &unescaped) < 0);
assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "abc\\\"\b\f\a\n\r\t\v\003\177\234\313\\000\\x00"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
/* incomplete sequences */
assert_se(cunescape("\\x0", 0, &unescaped) < 0);
assert_se(cunescape("\\x0", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\x0"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
assert_se(cunescape("\\x", 0, &unescaped) < 0);
assert_se(cunescape("\\x", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\x"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
assert_se(cunescape("\\", 0, &unescaped) < 0);
assert_se(cunescape("\\", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
assert_se(cunescape("\\11", 0, &unescaped) < 0);
assert_se(cunescape("\\11", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\11"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
assert_se(cunescape("\\1", 0, &unescaped) < 0);
assert_se(cunescape("\\1", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\1"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
assert_se(cunescape("\\u0000", 0, &unescaped) < 0);
assert_se(cunescape("\\u00DF\\U000000df\\u03a0\\U00000041", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "ßßΠA"));
free(unescaped);
unescaped = NULL;
unescaped = mfree(unescaped);
assert_se(cunescape("\\073", 0, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, ";"));
@ -859,32 +852,28 @@ static void test_read_hostname_config(void) {
write_string_file(path, "foo", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(streq(hostname, "foo"));
free(hostname);
hostname = NULL;
hostname = mfree(hostname);
/* with comment */
write_string_file(path, "# comment\nfoo", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(hostname);
assert_se(streq(hostname, "foo"));
free(hostname);
hostname = NULL;
hostname = mfree(hostname);
/* with comment and extra whitespace */
write_string_file(path, "# comment\n\n foo ", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(hostname);
assert_se(streq(hostname, "foo"));
free(hostname);
hostname = NULL;
hostname = mfree(hostname);
/* cleans up name */
write_string_file(path, "!foo/bar.com", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(hostname);
assert_se(streq(hostname, "foobar.com"));
free(hostname);
hostname = NULL;
hostname = mfree(hostname);
/* no value set */
hostname = (char*) 0x1234;

View file

@ -162,8 +162,7 @@ static int ask_password_plymouth(
/* Hmm, first try with cached
* passwords failed, so let's retry
* with a normal password request */
free(packet);
packet = NULL;
packet = mfree(packet);
if (asprintf(&packet, "*\002%c%s%n", (int) (strlen(message) + 1), message, &n) < 0)
return -ENOMEM;

View file

@ -674,20 +674,16 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
* might produce conflicting IDs if the parent does not provide a
* unique and predictable name.
*/
if (!supported_parent) {
free(path);
path = NULL;
}
if (!supported_parent)
path = mfree(path);
/*
* Do not return block devices without a well-known transport. Some
* devices do not expose their buses and do not provide a unique
* and predictable name that way.
*/
if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) {
free(path);
path = NULL;
}
if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport)
path = mfree(path);
out:
if (path != NULL) {

View file

@ -2589,8 +2589,7 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) {
uid = 0;
gid = 0;
mode = 0;
strv_free(tags);
tags = NULL;
tags = strv_free(tags);
break;
case TK_A_OWNER_ID:
uid = cur->key.uid;