On Wed, Oct 05, 2011 at 05:03:45PM -0400, Jason Merrill wrote: > On 10/05/2011 04:05 PM, Jakub Jelinek wrote: > >BTW, register_specialization has the same problems. If slot != NULL and fn > >== NULL, it can still return without storing non-NULL into *slot > >(when optimize_specialization_lookup_p (tmpl) returns non-zero). > >You can do else if (slot != NULL&& fn == NULL) htab_clear_slot > >(decl_specializations, slot); > > I don't think there's a problem in that function; if fn == NULL, > then we store spec in its place.
If optimize_specialization_lookup_p (tmpl) doesn't change return value in between the two calls, then you are right. But perhaps in that case you could avoid the second call and use slot != NULL instead. Jakub