diff options
author | arvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-06-10 22:48:25 +0000 |
---|---|---|
committer | arvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-06-10 22:48:25 +0000 |
commit | cbcf582cb9297ce0dbb5f60e9710ff8cde0ccfa4 (patch) | |
tree | 4c55961a607510b71ac8ea67e40bdab97118f9f9 /TAO | |
parent | b5607d3266d84aa03f7bd8bf85722c566b73e1dc (diff) | |
download | ATCD-cbcf582cb9297ce0dbb5f60e9710ff8cde0ccfa4.tar.gz |
Thu Jun 10 17:46:10 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/CIAO/ChangeLog | 9 | ||||
-rw-r--r-- | TAO/CIAO/DnC/Config_Handlers/TPD_Handler.cpp | 30 | ||||
-rw-r--r-- | TAO/CIAO/DnC/Config_Handlers/Utils.cpp | 26 |
3 files changed, 47 insertions, 18 deletions
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog index 206d826917d..528537bb14c 100644 --- a/TAO/CIAO/ChangeLog +++ b/TAO/CIAO/ChangeLog @@ -1,3 +1,12 @@ +Thu Jun 10 17:46:10 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu> + + * DnC/Config_Handlers/Utils.cpp: + * DnC/Config_Handlers/TPD_Handler.cpp: + + Fixe memory leaks pertaining to ACE_TString making copies of + dynamically allocated memory. The memory supplied to ACE_TString + has to be deleted! Fixed memory for these. + Thu Jun 10 17:44:57 2004 Jaiganesh B <jai@dre.vanderbilt.edu> * DnC/Config_Handlers/Process_Element.cpp: diff --git a/TAO/CIAO/DnC/Config_Handlers/TPD_Handler.cpp b/TAO/CIAO/DnC/Config_Handlers/TPD_Handler.cpp index b2484aa4b3d..45593b2c878 100644 --- a/TAO/CIAO/DnC/Config_Handlers/TPD_Handler.cpp +++ b/TAO/CIAO/DnC/Config_Handlers/TPD_Handler.cpp @@ -1,7 +1,6 @@ // $Id$ #include "tao/Exception.h" -#include "ace/Auto_Ptr.h" #include "ace/Log_Msg.h" #include "Property_Handler.h" @@ -27,7 +26,7 @@ ACE_TString TPD_Handler::process_TopLevelPackageDescription() node = this->iter_->nextNode()) { XStr node_name (node->getNodeName()); - if (node_name == XStr + if (node_name == XStr (ACE_TEXT ("Deployment:TopLevelPackageDescription"))) { } @@ -44,9 +43,12 @@ ACE_TString TPD_Handler::process_TopLevelPackageDescription() { DOMNode* attribute_node = named_node_map->item (j); XStr strattrnodename (attribute_node->getNodeName ()); - ACE_TString aceattrnodevalue = + + char * temp = XMLString::transcode (attribute_node->getNodeValue ()); - + ACE_TString aceattrnodevalue = temp; + XMLString::release (&temp); + // if href is given find out the referenced position // and process the element if (strattrnodename == XStr (ACE_TEXT ("href"))) @@ -54,13 +56,21 @@ ACE_TString TPD_Handler::process_TopLevelPackageDescription() XMLURL xml_url (aceattrnodevalue.c_str ()); XMLURL result (aceattrnodevalue.c_str ()); ACE_TString url_string = aceattrnodevalue.c_str (); - ACE_TString doc_path = + + char * temp = XMLString::transcode ( doc_->getDocumentURI ()); - result.makeRelativeTo - (XMLString::transcode (doc_path.c_str ())); - ACE_TString final_url = - XMLString::transcode (result.getURLText ()); - + ACE_TString doc_path = temp; + XMLString::release (&temp); + + XMLCh * relative_path = + XMLString::transcode (doc_path.c_str ()); + result.makeRelativeTo (relative_path); + XMLString::release (&relative_path); + + temp = XMLString::transcode (result.getURLText ()); + ACE_TString final_url = temp; + XMLString::release (&temp); + if (xml_url.isRelative ()) { return final_url; diff --git a/TAO/CIAO/DnC/Config_Handlers/Utils.cpp b/TAO/CIAO/DnC/Config_Handlers/Utils.cpp index e57762a8bb8..b4831da4dcc 100644 --- a/TAO/CIAO/DnC/Config_Handlers/Utils.cpp +++ b/TAO/CIAO/DnC/Config_Handlers/Utils.cpp @@ -121,7 +121,8 @@ CIAO::Config_Handler::Utils::create_document (const char * url) auto_ptr<DOMImplementation> cleanup_impl (impl); DOMBuilder* parser = - ((DOMImplementationLS*)impl)->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0); + ((DOMImplementationLS*)impl)-> + createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0); auto_ptr<DOMBuilder> cleanup_parser (parser); // Discard comment nodes in the document @@ -168,27 +169,36 @@ CIAO::Config_Handler::Utils::create_document (const char * url) DOMNodeIterator * CIAO::Config_Handler::Utils::parse_href_tag (XMLURL url, DOMDocument * doc) { - const char * document_path = 0; + char * document_path = 0; if (url.isRelative ()) { - ACE_TString doc_path = XMLString::transcode (doc->getDocumentURI ()); - url.makeRelativeTo (XMLString::transcode (doc_path.c_str ())); - ACE_TString path = XMLString::transcode (url.getURLText ()); - document_path = path.c_str (); + char * doc_path = XMLString::transcode (doc->getDocumentURI ()); + XMLCh * temp = XMLString::transcode (doc_path); + url.makeRelativeTo (temp); + document_path = XMLString::transcode (url.getURLText ()); + + // Release allocated memory + XMLString::release (&doc_path); + XMLString::release (&temp); } else { - ACE_TString path = XMLString::transcode (url.getURLText ()); - document_path = path.c_str (); + document_path = XMLString::transcode (url.getURLText ()); + } DOMDocument* href_doc = CIAO::Config_Handler::Utils::create_document (document_path); + auto_ptr<DOMDocument> cleanup_doc (href_doc); + DOMDocumentTraversal* traverse (href_doc); DOMNode* root = (href_doc->getDocumentElement ()); unsigned long filter = DOMNodeFilter::SHOW_ELEMENT | DOMNodeFilter::SHOW_TEXT; + // release allocated memory + XMLString::release (&document_path); + return traverse->createNodeIterator (root, filter, 0, |