]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2377] Make the construction exception safe
authorMichal 'vorner' Vaner <michal.vaner@nic.cz>
Mon, 10 Dec 2012 12:36:08 +0000 (13:36 +0100)
committerMichal 'vorner' Vaner <michal.vaner@nic.cz>
Mon, 10 Dec 2012 12:36:08 +0000 (13:36 +0100)
src/lib/dns/master_loader.cc

index bc1b4d12312d06b19f8d2cd1ef624d7c5cca0bcb..7b136e8b8bf035bbaf80c4e9c954d27db935106a 100644 (file)
 #include <dns/rdata.h>
 
 #include <string>
+#include <memory>
 
 using std::string;
+using std::auto_ptr;
 
 namespace isc {
 namespace dns {
@@ -236,9 +238,12 @@ MasterLoader::MasterLoader(std::istream& stream,
     if (add_callback.empty()) {
         isc_throw(isc::InvalidParameter, "Empty add RR callback");
     }
-    impl_ = new MasterLoaderImpl("", zone_origin, zone_class, callbacks,
-                                 add_callback, options);
-    impl_->pushStreamSource(stream);
+    auto_ptr<MasterLoaderImpl> impl(new MasterLoaderImpl("", zone_origin,
+                                                         zone_class, callbacks,
+                                                         add_callback,
+                                                         options));
+    impl->pushStreamSource(stream);
+    impl_ = impl.release();
 }
 
 MasterLoader::~MasterLoader() {