> > -static void filter_trees_update_omits(
> > +static int filter_trees_update_omits(
> >     struct object *obj,
> >     struct filter_trees_depth_data *filter_data,
> >     int include_it)
> >  {
> >     if (!filter_data->omits)
> > -           return;
> > +           return 1;
> >  
> >     if (include_it)
> > -           oidset_remove(filter_data->omits, &obj->oid);
> > +           return oidset_remove(filter_data->omits, &obj->oid);
> >     else
> > -           oidset_insert(filter_data->omits, &obj->oid);
> > +           return oidset_insert(filter_data->omits, &obj->oid);
> >  }
> 
> I think this function is getting too magical - if filter_data->omits is
> not set, we pretend that we have omitted the tree, because we want the
> same behavior when not needing omits and when the tree is omitted. Could
> this be done another way?

Giving some more thought to this, since this is a static function, maybe
documenting it as "Returns 1 if the objects that this object references need to
be traversed for "omits" updates, and 0 otherwise" (with the appropriate code
updates) would suffice.

Reply via email to