diff --git a/mozilla/calendar/libxpical/oeICalImpl.cpp b/mozilla/calendar/libxpical/oeICalImpl.cpp index a01266e8ae3..dfdd0e9f4d9 100644 --- a/mozilla/calendar/libxpical/oeICalImpl.cpp +++ b/mozilla/calendar/libxpical/oeICalImpl.cpp @@ -172,26 +172,36 @@ oeDateEnumerator::HasMoreElements(PRBool *result) return NS_OK; } -NS_IMETHODIMP -oeDateEnumerator::GetNext(nsISupports **_retval) -{ - - if( mCurrentIndex >= mIdVector.size() ) - { - *_retval = nsnull; - } - else - { - nsISupportsPRTime* date = new nsSupportsPRTimeImpl(); - date->AddRef(); - date->SetData( mIdVector[ mCurrentIndex ] ); - *_retval = date; - ++mCurrentIndex; - } - - return NS_OK; -} +NS_IMETHODIMP +oeDateEnumerator::GetNext(nsISupports **_retval) +{ + if( mCurrentIndex >= mIdVector.size() ) + { + *_retval = nsnull; + } + else + { + nsresult rv; + nsCOMPtr nsPRTime = do_CreateInstance( NS_SUPPORTS_PRTIME_CONTRACTID , &rv); + if( NS_FAILED( rv ) ) { + *_retval = NULL; + return rv; + } + nsISupportsPRTime* date; + rv = nsPRTime->QueryInterface(NS_GET_IID(nsISupportsPRTime), (void **)&date); + if( NS_FAILED( rv ) ) { + *_retval = NULL; + return rv; + } + + date->SetData( mIdVector[ mCurrentIndex ] ); + *_retval = date; + ++mCurrentIndex; + } + + return NS_OK; +} NS_IMETHODIMP oeDateEnumerator::AddDate(PRTime date)