I like the split between the allocation and the btree/list addition. But why not keep a helper for the latter two as they are always called together? > + assert(!dirty_tree_insert(oc->active_dirty_tree, entry)); Calling code with side effects inside assert statements is dangerous as the assert code can be compiled out using -NDEBUG |