Limited depth to 10 for assert dialog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33217
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
StackDump dump;
dump.Walk(5); // don't show OnAssert() call itself
- const wxString& stackTrace = dump.GetStackTrace();
+ wxString stackTrace = dump.GetStackTrace();
+
+ const int maxLines = 10;
+ // Don't show more than maxLines or we could get an enormous dialog
+ int count = stackTrace.Freq(wxT('\n'));
+ if (count > maxLines)
+ {
+ int i;
+ for (i = 0; i < count - maxLines; i++)
+ stackTrace = stackTrace.BeforeLast(wxT('\n'));
+ }
if ( !stackTrace.empty() )
{
msg << _T("\n\nCall stack:\n")
char **symbols = backtrace_symbols(addresses, depth);
- for ( int n = 0; n < depth; n++ )
+ if (skip > (size_t) depth)
+ skip = (size_t) depth;
+
+ for ( int n = skip; n < depth; n++ )
{
- wxStackFrame frame(n, addresses[n], symbols[n]);
+ wxStackFrame frame(n, addresses[n-skip], symbols[n-skip]);
OnStackFrame(frame);
}
}