aboutsummaryrefslogtreecommitdiffstats
path: root/src/address.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2005-07-12 22:28:02 +0000
committerVincent Richard <[email protected]>2005-07-12 22:28:02 +0000
commit681297e10b666e13cc463f6fbb16236f36c3266c (patch)
tree5d2392e2283232ed3475cd9c69e22897b03e8a97 /src/address.cpp
parentAdded contentHandler::extractRaw(). (diff)
downloadvmime-681297e10b666e13cc463f6fbb16236f36c3266c.tar.gz
vmime-681297e10b666e13cc463f6fbb16236f36c3266c.zip
Reference counting and smart pointers.
Diffstat (limited to 'src/address.cpp')
-rw-r--r--src/address.cpp22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/address.cpp b/src/address.cpp
index b0e11521..13a0ad59 100644
--- a/src/address.cpp
+++ b/src/address.cpp
@@ -62,7 +62,7 @@ address-list = (address *("," address)) / obs-addr-list
*/
-address* address::parseNext(const string& buffer, const string::size_type position,
+ref <address> address::parseNext(const string& buffer, const string::size_type position,
const string::size_type end, string::size_type* newPosition)
{
bool escaped = false;
@@ -171,22 +171,14 @@ address* address::parseNext(const string& buffer, const string::size_type positi
// Parse extracted address (mailbox or group)
if (pos != start)
{
- address* parsedAddress = isGroup
- ? static_cast<address*>(new mailboxGroup)
- : static_cast<address*>(new mailbox);
+ ref <address> parsedAddress = isGroup
+ ? create <mailboxGroup>().dynamicCast <address>()
+ : create <mailbox>().dynamicCast <address>();
- try
- {
- parsedAddress->parse(buffer, start, pos, NULL);
- parsedAddress->setParsedBounds(start, pos);
+ parsedAddress->parse(buffer, start, pos, NULL);
+ parsedAddress->setParsedBounds(start, pos);
- return (parsedAddress);
- }
- catch (std::exception&)
- {
- delete (parsedAddress);
- throw;
- }
+ return (parsedAddress);
}
return (NULL);