diff --git a/src/lib/acl/dns.cc b/src/lib/acl/dns.cc index d16ec658d3..d164398283 100644 --- a/src/lib/acl/dns.cc +++ b/src/lib/acl/dns.cc @@ -106,10 +106,10 @@ internal::RequestCheckCreator::create(const string& name, RequestLoader& getRequestLoader() { - static RequestLoader* loader(NULL); - if (loader == NULL) { + static auto_ptr loader(NULL); + if (loader.get() == NULL) { // Creator registration may throw, so we first store the new loader - // in an auto pointer in order to provide the strong exception + // in a second auto pointer in order to provide the strong exception // guarantee. auto_ptr loader_ptr = auto_ptr(new RequestLoader(REJECT)); @@ -129,7 +129,7 @@ getRequestLoader() { new LogicCreator("ALL"))); // From this point there shouldn't be any exception thrown - loader = loader_ptr.release(); + loader.reset(loader_ptr.release()); } return (*loader);