Don't worry about saved_errno since none of the *_free routines will set it

Signed-off-by: Dwight Engen <dwight.en...@oracle.com>
---
 src/lxc/cgroup.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c
index 101998b..bf7a2a2 100644
--- a/src/lxc/cgroup.c
+++ b/src/lxc/cgroup.c
@@ -293,7 +293,7 @@ struct cgroup_meta_data *lxc_cgroup_load_meta2(const char 
**subsystem_whitelist)
        }
 
        while (getline(&line, &sz, proc_self_mountinfo) != -1) {
-               char *token, *saveptr = NULL;
+               char *token, *line_tok, *saveptr = NULL;
                size_t i, j, k;
                struct cgroup_mount_point *mount_point;
                struct cgroup_hierarchy *h;
@@ -302,7 +302,7 @@ struct cgroup_meta_data *lxc_cgroup_load_meta2(const char 
**subsystem_whitelist)
                if (line[0] && line[strlen(line) - 1] == '\n')
                        line[strlen(line) - 1] = '\0';
 
-               for (i = 0; (token = strtok_r(line, " ", &saveptr)); line = 
NULL) {
+               for (i = 0, line_tok = line; (token = strtok_r(line_tok, " ", 
&saveptr)); line_tok = NULL) {
                        r = lxc_grow_array((void ***)&tokens, &token_capacity, 
i + 1, 64);
                        if (r < 0)
                                goto out4;
@@ -441,6 +441,7 @@ struct cgroup_meta_data *lxc_cgroup_put_meta(struct 
cgroup_meta_data *meta_data)
                        lxc_cgroup_hierarchy_free(meta_data->hierarchies[i]);
        }
        free(meta_data->hierarchies);
+       free(meta_data);
        return NULL;
 }
 
@@ -1067,29 +1068,30 @@ char *lxc_cgroup_get_hierarchy_abs_path(const char 
*subsystem, const char *name,
        struct cgroup_process_info *base_info, *info;
        struct cgroup_mount_point *mp;
        char *result = NULL;
-       int saved_errno;
 
        meta = lxc_cgroup_load_meta();
        if (!meta)
                return NULL;
        base_info = lxc_cgroup_get_container_info(name, lxcpath, meta);
        if (!base_info)
-               return NULL;
+               goto out1;
        info = find_info_for_subsystem(base_info, subsystem);
        if (!info)
-               return NULL;
+               goto out2;
        if (info->designated_mount_point) {
                mp = info->designated_mount_point; 
        } else {
                mp = lxc_cgroup_find_mount_point(info->hierarchy, 
info->cgroup_path, true);
                if (!mp)
-                       return NULL;
+                       goto out3;
        }
        result = cgroup_to_absolute_path(mp, info->cgroup_path, NULL);
-       saved_errno = errno;
+out3:
+       lxc_cgroup_process_info_free(info);
+out2:
        lxc_cgroup_process_info_free(base_info);
+out1:
        lxc_cgroup_put_meta(meta);
-       errno = saved_errno;
        return result;
 }
 
-- 
1.8.1.4


------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. 
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to