summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorarvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-06-10 22:48:25 +0000
committerarvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-06-10 22:48:25 +0000
commitcbcf582cb9297ce0dbb5f60e9710ff8cde0ccfa4 (patch)
tree4c55961a607510b71ac8ea67e40bdab97118f9f9 /TAO
parentb5607d3266d84aa03f7bd8bf85722c566b73e1dc (diff)
downloadATCD-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/ChangeLog9
-rw-r--r--TAO/CIAO/DnC/Config_Handlers/TPD_Handler.cpp30
-rw-r--r--TAO/CIAO/DnC/Config_Handlers/Utils.cpp26
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,