chiark / gitweb /
udev: link-config - use _cleanup_ macro locally
authorTom Gundersen <teg@jklm.no>
Tue, 29 Oct 2013 14:36:26 +0000 (15:36 +0100)
committerTom Gundersen <teg@jklm.no>
Tue, 29 Oct 2013 15:12:11 +0000 (16:12 +0100)
src/udev/net/link-config.c

index 598f93e..cc8ff6f 100644 (file)
@@ -49,8 +49,11 @@ struct link_config_ctx {
         usec_t link_dirs_ts_usec;
 };
 
         usec_t link_dirs_ts_usec;
 };
 
+DEFINE_TRIVIAL_CLEANUP_FUNC(link_config_ctx*, link_config_ctx_free);
+#define _cleanup_link_config_ctx_free_ _cleanup_(link_config_ctx_freep)
+
 int link_config_ctx_new(link_config_ctx **ret) {
 int link_config_ctx_new(link_config_ctx **ret) {
-        link_config_ctx *ctx;
+        _cleanup_link_config_ctx_free_ link_config_ctx *ctx = NULL;
         int r;
 
         if (!ret)
         int r;
 
         if (!ret)
@@ -61,16 +64,12 @@ int link_config_ctx_new(link_config_ctx **ret) {
                 return -ENOMEM;
 
         r = ethtool_connect(&ctx->ethtool_fd);
                 return -ENOMEM;
 
         r = ethtool_connect(&ctx->ethtool_fd);
-        if (r < 0) {
-                link_config_ctx_free(ctx);
+        if (r < 0)
                 return r;
                 return r;
-        }
 
         r = sd_rtnl_open(0, &ctx->rtnl);
 
         r = sd_rtnl_open(0, &ctx->rtnl);
-        if (r < 0) {
-                link_config_ctx_free(ctx);
+        if (r < 0)
                 return r;
                 return r;
-        }
 
         LIST_HEAD_INIT(ctx->links);
 
 
         LIST_HEAD_INIT(ctx->links);
 
@@ -80,16 +79,17 @@ int link_config_ctx_new(link_config_ctx **ret) {
                                   NULL);
         if (!ctx->link_dirs) {
                 log_error("failed to build link config directory array");
                                   NULL);
         if (!ctx->link_dirs) {
                 log_error("failed to build link config directory array");
-                link_config_ctx_free(ctx);
                 return -ENOMEM;
         }
                 return -ENOMEM;
         }
+
         if (!path_strv_canonicalize_uniq(ctx->link_dirs)) {
                 log_error("failed to canonicalize link config directories\n");
         if (!path_strv_canonicalize_uniq(ctx->link_dirs)) {
                 log_error("failed to canonicalize link config directories\n");
-                link_config_ctx_free(ctx);
                 return -ENOMEM;
         }
 
         *ret = ctx;
                 return -ENOMEM;
         }
 
         *ret = ctx;
+        ctx = NULL;
+
         return 0;
 }
 
         return 0;
 }