Remove catch(...) handler occurrences.
[shibboleth/cpp-xmltooling.git] / xmltooling / AbstractDOMCachingXMLObject.cpp
index 53564ff..77d508b 100644 (file)
@@ -123,13 +123,10 @@ XMLObject* AbstractDOMCachingXMLObject::clone() const
             domCopy->getOwnerDocument()->release();\r
             throw UnmarshallingException("Unable to locate builder for cloned element.");\r
         }\r
-        try {\r
-            return b->buildFromElement(domCopy,true); // bind document\r
-        }\r
-        catch (...) {\r
-            domCopy->getOwnerDocument()->release();\r
-            throw;\r
-        }\r
+        XercesJanitor<DOMDocument> janitor(domCopy->getOwnerDocument());\r
+        XMLObject* ret = b->buildFromElement(domCopy,true); // bind document\r
+        janitor.release(); // safely transferred\r
+        return ret;\r
     }\r
     return NULL;\r
 }\r