• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 381
  • Last Modified:

ATL COM Object GET property using BSTR

Is this code correct..IE will it product memory leaks?


STDMETHODIMP CUPS::get_m_strLastError(BSTR *pVal)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState())

    // TODO: Add your implementation code here
    SysFreeString(*pVal);
    CString strError;

    strError="<font style='font-size:10pt;font-family:Verdana,Arial;'>";
    strError+=m_strLastError+"</font>\0";

    int iSize=strError.GetLength();
    char* str = strError.GetBuffer(iSize);
    unsigned short *newstr= NULL;
   
    int iWideSize=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str,-1,newstr,0);

    newstr = new unsigned short[iWideSize];
    memset(newstr,0,iWideSize);

    MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str,-1,newstr,iWideSize);
    *pVal=SysAllocString(newstr);

    delete (unsigned short*)newstr;
    strError.ReleaseBuffer();
    return S_OK;
}
0
Dredwick
Asked:
Dredwick
1 Solution
 
migelCommented:
Hi!
no your code will not lead to memory leak
but some additions:

// here you jave to use WCHAR
 newstr = new WCHAR[iWideSize]; //<<
   memset(newstr,0,iWideSize*sizeof(WCHAR));//<<

   MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str,-1,newstr,iWideSize);
   *pVal=SysAllocString(newstr);

   delete[] newstr; //<<<
   strError.ReleaseBuffer();
0
 
DredwickAuthor Commented:
Thanks Migel!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now