i just ran through a few debug sessions. seems like the bottleneck is in the encoder. specifically,
line 93 EncodingDetector.cpp (see *** CHOKES HERE **** line below)
bool EncodingDetector::ConvertToWxStr(const wxByte* buffer, size_t size)
{
if (!buffer || size == 0)
return false;
if (m_BOMSizeInBytes > 0)
{
for (int i = 0; i < m_BOMSizeInBytes; ++i)
*buffer++;
}
size_t outlen = 0;
wxCSConv conv(m_Encoding);
/* NOTE (Biplab#5#): FileManager returns a buffer with 4 extra NULL chars appended.
But the buffer size is returned sans the NULL chars */
wxWCharBuffer wideBuff = conv.cMB2WC((char*)buffer, size + 4 - m_BOMSizeInBytes, &outlen); ****CHOKES HERE*****
m_ConvStr = wxString(wideBuff);
strangely, this code gets called twice every file open (and is slow each time)
UNRELATED OBSERVATION: when i remove breakpoints in an active debug session, the breakpoints remain (this is a pretty longstanding issue with debugger plugin in cb)