diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp')
-rw-r--r-- | TAO/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/TAO/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp b/TAO/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp index 2ab483823b6..7eed65dafbb 100644 --- a/TAO/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp +++ b/TAO/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp @@ -50,7 +50,9 @@ bool URL_Parser::parseURL (char* url) url += ACE_OS::strlen ("http://"); if (url[0] == '/') - this->filename_ = url; + { + this->filename_ = ACE_OS::strdup (url); + } else { if (ptr = ACE_OS::strstr (url, ":")) @@ -63,13 +65,13 @@ bool URL_Parser::parseURL (char* url) else { size_t host_len = ptr - url; - ACE_NEW_RETURN (this->hostname_, char [host_len], false); + ACE_NEW_RETURN (this->hostname_, char [host_len + 1], false); ACE_OS::strncpy (this->hostname_, url, host_len); this->hostname_ [host_len] = '\0'; if (ptr = ACE_OS::strstr (ptr, "/")) { - this->filename_ = ptr; + this->filename_ = ACE_OS::strdup(ptr); } else success = false; @@ -89,5 +91,13 @@ void URL_Parser::Error (void) URL_Parser::~URL_Parser() { if(this->hostname_) + { delete [] this->hostname_; + this->hostname_ =0; + } + if (this->filename_) + { + ACE_OS::free (this->filename_); + this->filename_ = 0; + } } |