#if wxUSE_ZIPSTREAM
#include "wx/wfstream.h"
#include "wx/zipstrm.h"
+ #include "wx/ptr_scpd.h"
#endif // wxUSE_ZIPSTREAM
WX_CHECK_BUILD_OPTIONS("wxQA")
m_descriptions.Add(description);
}
+bool
+wxDebugReport::AddText(const wxString& name,
+ const wxString& text,
+ const wxString& description)
+{
+ wxFileName fn(GetDirectory(), name);
+ wxFFile file(fn.GetFullPath(), _T("w"));
+ if ( !file.IsOpened() || !file.Write(text) )
+ return false;
+
+ AddFile(name, description);
+
+ return true;
+}
+
void wxDebugReport::RemoveFile(const wxString& name)
{
const int n = m_files.Index(name);
if ( !path.empty() )
nodeModule->AddProperty(_T("path"), path);
- void *addr;
- size_t len;
+ void *addr = NULL;
+ size_t len = 0;
if ( info.GetAddress(&addr, &len) )
{
HexProperty(nodeModule, _T("address"), (unsigned long)addr);
wxXmlNode *nodeRoot = new wxXmlNode(wxXML_ELEMENT_NODE, _T("report"));
xmldoc.SetRoot(nodeRoot);
nodeRoot->AddProperty(_T("version"), _T("1.0"));
- nodeRoot->AddProperty(_T("kind"), ctx == Context_Curent ? _T("user")
- : _T("exception"));
+ nodeRoot->AddProperty(_T("kind"), ctx == Context_Current ? _T("user")
+ : _T("exception"));
// add system information
wxXmlNode *nodeSystemInfo = new wxXmlNode(wxXML_ELEMENT_NODE, _T("system"));
{
sw.WalkFromException();
}
- else // Context_Curent
+ else // Context_Current
{
sw.Walk();
}
#if wxUSE_ZIPSTREAM
+// leave the default name wxZipOutputStreamPtr free for users
+wxDECLARE_SCOPED_PTR(wxZipOutputStream, wxDbgZipOutputStreamPtr)
+wxDEFINE_SCOPED_PTR(wxZipOutputStream, wxDbgZipOutputStreamPtr)
+
// ----------------------------------------------------------------------------
// wxDebugReportCompress
// ----------------------------------------------------------------------------
// create the streams
wxFileName fn(GetDirectory(), GetReportName(), _T("zip"));
wxFFileOutputStream os(fn.GetFullPath(), _T("wb"));
- wxZipOutputStream zos(os, 9);
+
+ // create this one on the heap as a workaround since otherwise the mingw
+ // 3.2.3 linker cannot find ~wxZipOutputStream() when building a dll
+ // version of the library.
+ wxDbgZipOutputStreamPtr zos(new wxZipOutputStream(os, 9));
// add all files to the ZIP one
wxString name, desc;
wxZipEntry *ze = new wxZipEntry(name);
ze->SetComment(desc);
- if ( !zos.PutNextEntry(ze) )
+ if ( !zos->PutNextEntry(ze) )
return false;
wxFileName filename(fn.GetPath(), name);
wxFFileInputStream is(filename.GetFullPath());
- if ( !is.IsOk() || !zos.Write(is).IsOk() )
+ if ( !is.IsOk() || !zos->Write(is).IsOk() )
return false;
}
- if ( !zos.Close() )
+ if ( !zos->Close() )
return false;
m_zipfile = fn.GetFullPath();