I'm trying to install crash reported in my 64-bit UNICODE DLL (is DLLMain the place to do this?), using the 64-bit UNICODE version of CR 1403.
if(lpcszErrorReportSaveDir==NULL)
{
// Create %LOCAL_APPDATA%\CrashRpt\UnsentCrashReports\AppName_AppVer folder.
CString sLocalAppDataFolder;
DWORD dwCSIDL = CSIDL_LOCAL_APPDATA;
Utility::GetSpecialFolder(dwCSIDL, sLocalAppDataFolder);
m_sUnsentCrashReportsFolder.Format(_T("%s\\CrashRpt\\UnsentCrashReports\\%s_%s"),
sLocalAppDataFolder, m_sAppName, m_sAppVersion);
}
else
{
...
}
When you try to step past the else and you hit the ~CString() (for sLocalAppDataFolder).
So then I tried setting CR_INSTALL_INFO.pszErrorReportSaveDir. This crashes in a different string-related area,
again in a destructor:
~strconv_t()
{
unsigned i;
for(i=0; i<m_ConvertedStrings.size(); i++)
{
delete [] m_ConvertedStrings[i];
}
}
It hits this destructor when trying to return from Utility::GenerateGUID(CString& sGUID); (why does strconv store the string buffers anyway?)
Something definitely seems up with the string handling.
Any idea what?