libsmartcols: make child-parent reference more robust [clang analyze]

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2015-07-29 14:44:27 +02:00
parent a172badb03
commit fdd68e25b5
1 changed files with 4 additions and 5 deletions

View File

@ -214,20 +214,19 @@ int scols_line_add_child(struct libscols_line *ln, struct libscols_line *child)
if (!ln || !child)
return -EINVAL;
DBG(LINE, ul_debugobj(ln, "add child %p", child));
scols_ref_line(child);
scols_ref_line(ln);
/* unref old<->parent */
if (child->parent)
scols_line_remove_child(child->parent, child);
DBG(LINE, ul_debugobj(ln, "add child %p", child));
/* new reference from parent to child */
list_add_tail(&child->ln_children, &ln->ln_branch);
scols_ref_line(child);
/* new reference from child to parent */
child->parent = ln;
scols_ref_line(ln);
return 0;
}