Account the nr_entries in rblist properly
authorSuzuki K. Poulose <suzuki@in.ibm.com>
Fri, 31 Aug 2012 07:09:18 +0000 (12:39 +0530)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 24 Oct 2012 16:20:11 +0000 (14:20 -0200)
The nr_entries in rblist is never decremented when an element
is deleted. Also, use rblist__remove_node to delete a node in
rblist__delete(). This would keep the nr_entries sane.

Signed-off-by: Suzuki K. Poulose <suzuki@in.ibm.com>
Acked-by: David S. Ahern <dsahern@gmail.com>
Cc: David S. Ahern <dsahern@gmail.com>
Link: http://lkml.kernel.org/r/20120831070834.14806.87398.stgit@suzukikp.in.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/rblist.c

index 0171fb611004ec16c40da435d4ee0cac44be22b3..a16cdd2625ad2b4a0ff8ff39d6b91b331f3a3a1e 100644 (file)
@@ -44,6 +44,7 @@ int rblist__add_node(struct rblist *rblist, const void *new_entry)
 void rblist__remove_node(struct rblist *rblist, struct rb_node *rb_node)
 {
        rb_erase(rb_node, &rblist->entries);
+       --rblist->nr_entries;
        rblist->node_delete(rblist, rb_node);
 }
 
@@ -87,8 +88,7 @@ void rblist__delete(struct rblist *rblist)
                while (next) {
                        pos = next;
                        next = rb_next(pos);
-                       rb_erase(pos, &rblist->entries);
-                       rblist->node_delete(rblist, pos);
+                       rblist__remove_node(rblist, pos);
                }
                free(rblist);
        }