obj: use ref-counting in set objects
This commit is contained in:
@@ -20,7 +20,7 @@ static kern_status_t set_get_child_at(object_t *obj, size_t at, object_t **out)
|
||||
size_t i = 0;
|
||||
queue_foreach(object_t, child, &set->s_list, ob_list) {
|
||||
if (i == at) {
|
||||
*out = child;
|
||||
*out = object_ref(child);
|
||||
return KERN_OK;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ static kern_status_t set_get_child_named(object_t *obj, const char *name, object
|
||||
}
|
||||
|
||||
if (!strcmp(child_name, name)) {
|
||||
*out = child;
|
||||
*out = object_ref(child);
|
||||
return KERN_OK;
|
||||
}
|
||||
}
|
||||
@@ -104,6 +104,7 @@ kern_status_t set_add_object(object_t *set_obj, object_t *obj)
|
||||
}
|
||||
}
|
||||
|
||||
object_ref(obj);
|
||||
queue_push_back(&set->s_list, &obj->ob_list);
|
||||
return KERN_OK;
|
||||
}
|
||||
@@ -116,6 +117,7 @@ kern_status_t set_remove_object(object_t *set_obj, object_t *obj)
|
||||
|
||||
struct set *set = object_data(set_obj);
|
||||
queue_delete(&set->s_list, &obj->ob_list);
|
||||
object_deref(obj);
|
||||
|
||||
return KERN_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user