On Wed, Jun 21, 2017 at 11:15:01AM -0700, Junio C Hamano wrote:

> > +   if (!oi->typep && !oi->sizep && !oi->disk_sizep &&
> > +       !oi->delta_base_sha1 && !oi->typename && !oi->contentp &&
> > +       !oi->populate_u) {
> > +           oi->whence = OI_PACKED;
> > +           return 0;
> > +   }
> > +
> 
> ... this "if" statement feels like a maintenance nightmare.  The
> intent of the guard, I think, is "when the call wants absolutely
> nothing but whence", but the implementation of the guard will not
> stay true to the intent whenever somebody adds a new field to oi.
> 
> I wonder if it makes more sense to have a new field "whence_only",
> which is set only by such a specialized caller, which this guard
> checks (and no other fields).

The other nice thing about whence_only is that it flips the logic. So
any existing callers which depend on filling the union automatically
will not be affected (though I would be surprised if there are any such
callers; most of that information isn't actually that interesting).

-Peff

Reply via email to