Parcourir la source

[2377] Make the construction exception safe

Michal 'vorner' Vaner il y a 12 ans
Parent
commit
cc9c51e9a2
1 fichiers modifiés avec 8 ajouts et 3 suppressions
  1. 8 3
      src/lib/dns/master_loader.cc

+ 8 - 3
src/lib/dns/master_loader.cc

@@ -21,8 +21,10 @@
 #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() {