On 24/04/19 11:51AM, Patrick Steinhardt wrote: > The `default_attr_source()` function lazily computes the attr source > supposedly once, only. This is done via a static variable `attr_source` > that contains the resolved object ID of the attr source's tree. If the > variable is the null object ID then we try to look up the attr source, > otherwise we skip over it. > > This has approach is flawed though: the variable will never be set to Remove "has" -Justin > anything else but the null object ID in case there is no attr source. > Consequently, we re-compute the information on every call. And in the > worst case, when we silently ignore bad trees, this will cause us to try > and look up the treeish every single time. > > Improve this by introducing a separate variable `has_attr_source` to > track whether we already computed the attr source and, if so, whether we > have an attr source or not. > > This also allows us to convert the `ignore_bad_attr_tree` to not be > static anymore as the code will only be executed once anyway. > > Signed-off-by: Patrick Steinhardt <ps@xxxxxx> ...