diff --git a/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D.cpp b/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D.cpp index 15bd4a570777..c1b8599d9c4c 100644 --- a/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D.cpp +++ b/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D.cpp @@ -25,6 +25,7 @@ If the file contains mulitple SASentry elements a workspace group will be create #include #include #include +#include #include //----------------------------------------------------------------------- @@ -80,7 +81,7 @@ int LoadCanSAS1D::confidence(Kernel::FileDescriptor & descriptor) const Poco::XML::InputSource src(is); // Set up the DOM parser and parse xml file DOMParser pParser; - Document* pDoc; + Poco::AutoPtr pDoc; try { pDoc = pParser.parse(&src); @@ -98,7 +99,6 @@ int LoadCanSAS1D::confidence(Kernel::FileDescriptor & descriptor) const confidence = 80; } } - pDoc->release(); }// end of inner scope return confidence; @@ -123,7 +123,7 @@ void LoadCanSAS1D::exec() const std::string fileName = getPropertyValue("Filename"); // Set up the DOM parser and parse xml file DOMParser pParser; - Document* pDoc; + Poco::AutoPtr pDoc; try { pDoc = pParser.parse(fileName); @@ -138,7 +138,7 @@ void LoadCanSAS1D::exec() throw Kernel::Exception::NotFoundError("No root element in CanSAS1D XML file", fileName); } // there can be multiple elements, each one contains a period which will go into a workspace group if there are more than one of them - NodeList* entryList = pRootElem->getElementsByTagName("SASentry"); + Poco::AutoPtr entryList = pRootElem->getElementsByTagName("SASentry"); size_t numEntries = entryList->length(); Workspace_sptr outputWork; MatrixWorkspace_sptr WS; @@ -164,8 +164,6 @@ void LoadCanSAS1D::exec() } outputWork = group; } - entryList->release(); - pDoc->release(); setProperty("OutputWorkspace", outputWork); } /** Load an individual "" element into a new workspace @@ -181,7 +179,7 @@ MatrixWorkspace_sptr LoadCanSAS1D::loadEntry(Poco::XML::Node * const workspaceDa check(workspaceElem, ""); runName = workspaceElem->getAttribute("name"); - NodeList* runs = workspaceElem->getElementsByTagName("Run"); + Poco::AutoPtr runs = workspaceElem->getElementsByTagName("Run"); if ( runs->length() != 1 ) { throw Exception::NotImplementedError("s containing multiple runs, or no runs, are not currently supported"); @@ -190,7 +188,7 @@ MatrixWorkspace_sptr LoadCanSAS1D::loadEntry(Poco::XML::Node * const workspaceDa Element* sasDataElem = workspaceElem->getChildElement("SASdata"); check(sasDataElem, ""); // getting number of Idata elements in the xml file - NodeList* idataElemList = sasDataElem->getElementsByTagName("Idata"); + Poco::AutoPtr idataElemList = sasDataElem->getElementsByTagName("Idata"); size_t nBins = idataElemList->length(); MatrixWorkspace_sptr dataWS = @@ -266,7 +264,6 @@ MatrixWorkspace_sptr LoadCanSAS1D::loadEntry(Poco::XML::Node * const workspaceDa // run load instrument runLoadInstrument(instname, dataWS); - idataElemList->release(); dataWS->getAxis(0)->setUnit("MomentumTransfer"); return dataWS; } @@ -336,12 +333,12 @@ void LoadCanSAS1D::createLogs(const Poco::XML::Element * const sasEntry, API::Ma Element * runText = sasEntry->getChildElement("Run"); check(runText, "Run"); run.addLogData(new PropertyWithValue( - "run_number", runText->innerText())); + "run_number", runText->innerText())); Element * process = sasEntry->getChildElement("SASprocess"); if (process) { - NodeList* terms = process->getElementsByTagName("term"); + Poco::AutoPtr terms = process->getElementsByTagName("term"); for ( unsigned int i = 0; i < terms->length(); ++i ) { Node* term = terms->item(i); diff --git a/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D2.cpp b/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D2.cpp index 6e1f20d414b0..48d74460d8a8 100644 --- a/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D2.cpp +++ b/Code/Mantid/Framework/DataHandling/src/LoadCanSAS1D2.cpp @@ -147,9 +147,8 @@ MatrixWorkspace_sptr LoadCanSAS1D2::loadEntry(Poco::XML::Node * const workspaceD Element *workspaceElem = dynamic_cast(workspaceData); // check(workspaceElem, ""); // already done at LoadCanSAS1D::loadEntry - NodeList * sasTransList = workspaceElem->getElementsByTagName("SAStransmission_spectrum"); - if (!sasTransList->length()){ - //sasTransList->release(); + Poco::AutoPtr sasTransList = workspaceElem->getElementsByTagName("SAStransmission_spectrum"); + if (!sasTransList->length()){ g_log.warning() << "There is no transmission data for this file " << getPropertyValue("Filename") << std::endl; return main_out; } @@ -164,7 +163,7 @@ MatrixWorkspace_sptr LoadCanSAS1D2::loadEntry(Poco::XML::Node * const workspaceD std::vector & group = (sasTrasElem->getAttribute("name") == "sample")? trans_gp : trans_can_gp; // getting number of Tdata elements in the xml file - NodeList* tdataElemList = sasTrasElem->getElementsByTagName("Tdata"); + Poco::AutoPtr tdataElemList = sasTrasElem->getElementsByTagName("Tdata"); size_t nBins = tdataElemList->length(); MatrixWorkspace_sptr dataWS = @@ -222,7 +221,6 @@ MatrixWorkspace_sptr LoadCanSAS1D2::loadEntry(Poco::XML::Node * const workspaceD } runLoadInstrument(main_out->getInstrument()->getName(), dataWS); - tdataElemList->release(); dataWS->getAxis(0)->setUnit("Wavelength"); // add to group diff --git a/Code/Mantid/Framework/DataHandling/src/LoadMask.cpp b/Code/Mantid/Framework/DataHandling/src/LoadMask.cpp index 88c3e3700725..3a804b5302d6 100644 --- a/Code/Mantid/Framework/DataHandling/src/LoadMask.cpp +++ b/Code/Mantid/Framework/DataHandling/src/LoadMask.cpp @@ -515,7 +515,7 @@ namespace DataHandling throw std::runtime_error("Call LoadMask::initialize() before parseXML."); // 1. Parse and create a structure - NodeList* pNL_type = pRootElem->getElementsByTagName("type"); + Poco::AutoPtr pNL_type = pRootElem->getElementsByTagName("type"); g_log.information() << "Node Size = " << pNL_type->length() << std::endl; Poco::XML::NodeIterator it(pDoc, Poco::XML::NodeFilter::SHOW_ELEMENT); diff --git a/Code/Mantid/Framework/DataHandling/src/LoadPreNexusMonitors.cpp b/Code/Mantid/Framework/DataHandling/src/LoadPreNexusMonitors.cpp index 6c64df15e3e1..bdcde21cb165 100644 --- a/Code/Mantid/Framework/DataHandling/src/LoadPreNexusMonitors.cpp +++ b/Code/Mantid/Framework/DataHandling/src/LoadPreNexusMonitors.cpp @@ -142,7 +142,7 @@ void LoadPreNexusMonitors::exec() if (pNode->nodeName() == "DataList") { // Get a list of the child elements - Poco::XML::NodeList* pDataListChildren = pNode->childNodes(); + Poco::AutoPtr pDataListChildren = pNode->childNodes(); for (unsigned long i = 0; i < pDataListChildren->length(); ++i) { // We only care about monitors @@ -153,8 +153,6 @@ void LoadPreNexusMonitors::exec() monitorFilenames.push_back(element->getAttribute("name")); } } - // Release the NodeList - pDataListChildren->release(); } @@ -162,7 +160,7 @@ void LoadPreNexusMonitors::exec() if (pNode->nodeName() == "FileFormats") { // Get a list of the child elements - Poco::XML::NodeList* pDataListChildren = pNode->childNodes(); + Poco::AutoPtr pDataListChildren = pNode->childNodes(); for (unsigned long i = 0; i < pDataListChildren->length(); ++i) { // We only care about monitors @@ -173,8 +171,6 @@ void LoadPreNexusMonitors::exec() tchannels = boost::lexical_cast(dims); } } - // Release the NodeList - pDataListChildren->release(); } pNode = it.nextNode(); diff --git a/Code/Mantid/Framework/DataHandling/src/LoadSpice2D.cpp b/Code/Mantid/Framework/DataHandling/src/LoadSpice2D.cpp index 9572d81c7604..486c9b22299b 100644 --- a/Code/Mantid/Framework/DataHandling/src/LoadSpice2D.cpp +++ b/Code/Mantid/Framework/DataHandling/src/LoadSpice2D.cpp @@ -112,7 +112,7 @@ namespace Mantid Poco::XML::InputSource src(is); // Set up the DOM parser and parse xml file DOMParser pParser; - Document* pDoc; + Poco::AutoPtr pDoc; try { pDoc = pParser.parse(&src); @@ -130,7 +130,6 @@ namespace Mantid confidence = 80; } } - pDoc->release(); }// end of inner scope return confidence; @@ -179,7 +178,7 @@ namespace Mantid // Set up the DOM parser and parse xml file DOMParser pParser; - Document* pDoc; + Poco::AutoPtr pDoc; try { pDoc = pParser.parse(fileName); @@ -421,9 +420,6 @@ namespace Mantid g_log.error("Unable to successfully run MoveInstrumentComponent Child Algorithm"); g_log.error(e.what()); } - - // Release the XML document memory - pDoc->release(); } /** Run the Child Algorithm LoadInstrument (as for LoadRaw) diff --git a/Code/Mantid/Framework/DataHandling/src/SNSDataArchive.cpp b/Code/Mantid/Framework/DataHandling/src/SNSDataArchive.cpp index e6147f766912..b9477033019a 100644 --- a/Code/Mantid/Framework/DataHandling/src/SNSDataArchive.cpp +++ b/Code/Mantid/Framework/DataHandling/src/SNSDataArchive.cpp @@ -20,6 +20,7 @@ #include #include #include +#include "Poco/DOM/AutoPtr.h" #include @@ -75,7 +76,7 @@ std::string SNSDataArchive::getArchivePath(const std::set& filename // Create a DOM document from the response. Poco::XML::DOMParser parser; Poco::XML::InputSource source(rs); - Poco::XML::Document* pDoc = parser.parse(&source); + Poco::AutoPtr pDoc = parser.parse(&source); std::vector locations; @@ -84,7 +85,7 @@ std::string SNSDataArchive::getArchivePath(const std::set& filename if (res.getStatus() == Poco::Net::HTTPResponse::HTTP_OK) { std::string location; - Poco::XML::NodeList* pList = pDoc->getElementsByTagName("location"); + Poco::AutoPtr pList = pDoc->getElementsByTagName("location"); for(unsigned long i = 0 ; i < pList->length(); i++) { location = pList->item(i)->innerText();