diff -r b67dd1fc57c5 -r 2ed61feeead6 khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp --- a/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp Fri May 14 18:19:45 2010 -0500 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp Fri May 28 19:26:28 2010 -0500 @@ -27,15 +27,9 @@ { CMetadataUtilityItf* p_mdutilitf = new CMetadataUtilityItf; - TInt ret = p_mdutilitf->ParseSource(uri); + p_mdutilitf->ParseSource(uri); //ignore error - if(ret == KErrNone) - { - return p_mdutilitf; - } - - delete p_mdutilitf; - return NULL; + return p_mdutilitf; } TInt CMetadataUtilityItf::OpenSource(char* pOrigUri) @@ -95,7 +89,24 @@ { delete []uri; } - + + if(ret != KErrNone) + { + //delete the utilities + if(m_pS60Util) + { + delete m_pS60Util; + m_pS60Util = NULL; + } + + if(m_pHXUtil) + { + delete m_pHXUtil; + m_pHXUtil = NULL; + } + + + } return ret; } @@ -113,14 +124,18 @@ TInt CMetadataUtilityItf::CalculateNumMetadataItems(TUint*numItems) { + *numItems = 0; + if(m_pS60Util) { return m_pS60Util->CalculateNumMetadataItems(numItems); } - else + else if(m_pHXUtil) { return m_pHXUtil->CalculateNumMetadataItems(numItems); } + + return KErrNone; } char* CMetadataUtilityItf::GetKey(TInt index) @@ -129,10 +144,12 @@ { return m_pS60Util->GetKey(index); } - else + else if(m_pHXUtil) { return m_pHXUtil->GetKey(index); } + + return NULL; } TInt CMetadataUtilityItf::GetValueSize(TInt index) @@ -141,10 +158,12 @@ { return m_pS60Util->GetValueSize(index); } - else + else if(m_pHXUtil) { return m_pHXUtil->GetValueSize(index); } + + return 0; } TInt CMetadataUtilityItf::GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType) @@ -153,10 +172,12 @@ { return m_pS60Util->GetValue(index, data, maxLength, outSize, encodingType); } - else + else if(m_pHXUtil) { return m_pHXUtil->GetValue(index, data, maxLength, outSize, encodingType); } + + return 0; } TInt CMetadataUtilityItf::ParseSource(char* uri)