I have a tree grid that crashes each time A node is going to be displayed.
I see that in CExtTreeGridDataProvider::_Tree_MapRowToCache
, this line:
CExtTreeGridCellNode * pNode = m_arrGridVis.GetAt( nRowNo );
returns NULL, even though the row line is valid. The entry is within the array, because the array size is bigger then the nRowNo
, so, for some reason the array contains NULL entries - how can this be?
Please note that the same think does not happen in 2.82.
Please fix.
Thanks,
Ron.
This is the stack:
ntdll.dll!7c90120e()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
msvcr80d.dll!_CrtDbgBreak() Line 89 C
msvcr80d.dll!_VCrtDbgReportA(int nRptType=2, const char * szFile=0x01bdce48, int nLine=2268, const char * szModule=0x00000000, const char * szFormat=0x00000000, char * arglist=0x0012659c) Line 290 C
msvcr80d.dll!_CrtDbgReportV(int nRptType=2, const char * szFile=0x01bdce48, int nLine=2268, const char * szModule=0x00000000, const char * szFormat=0x00000000, char * arglist=0x0012659c) Line 300 + 0x1d bytes C
msvcr80d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x01bdce48, int nLine=2268, const char * szModule=0x00000000, const char * szFormat=0x00000000, ...) Line 317 + 0x1d bytes C
mfc80d.dll!AfxAssertFailedLine(const char * lpszFileName=0x01bdce48, int nLine=2268) Line 25 + 0x14 bytes C++
mfc80d.dll!AfxAssertValidObject(const CObject * pOb=0x00000000, const char * lpszFileName=0x01bdce48, int nLine=2268) Line 77 + 0xd bytes C++
> ProfUIS284md.dll!CExtTreeGridDataProvider::_Tree_MapRowToCache(unsigned long nRowNo=13) Line 2269 C++
ProfUIS284md.dll!CExtTreeGridDataProvider::_Tree_NodeGetByVisibleRowIndex(unsigned long nRowNo=14) Line 932 + 0x16 bytes C++
ProfUIS284md.dll!CExtTreeGridDataProvider::TreeNodeGetByVisibleRowIndex(unsigned long nRowNo=14) Line 917 + 0x16 bytes C++
ProfUIS284md.dll!CExtTreeGridWnd::ItemGetByVisibleRowIndex(long nRowNo=14) Line 3105 + 0xc bytes C++
ProfUIS284md.dll!CExtTreeGridWnd::OnSiwQueryItemExtentV(long nRowNo=13, int * p_nExtraSpaceBefore=0x00000000, int * p_nExtraSpaceAfter=0x00000000) Line 5117 + 0x16 bytes C++
ProfUIS284md.dll!CExtGridBaseWnd::OnSiwCalcPageMetrics(int nDirection=0) Line 7152 + 0x1d bytes C++
ProfUIS284md.dll!CExtScrollItemWnd::OnSiwGetVisibleRange() Line 6546 + 0x18 bytes C++
ProfUIS284md.dll!CExtGridBaseWnd::OnGbwWalkVisibleAreas(CDC & dc={...}, bool bFocusedControl=false, CExtGridHitTestInfo * pHT=0x00000000) Line 2582 + 0x16 bytes C++
ProfUIS284md.dll!CExtGridBaseWnd::OnSiwPaintForeground(CDC & dc={...}, bool bFocusedControl=false) Line 2169 + 0x1c bytes C++
ProfUIS284md.dll!CExtScrollItemWnd::OnSwPaint(CDC & dc={...}) Line 6080 + 0x1a bytes C++
ProfUIS284md.dll!CExtScrollWnd::OnPaint() Line 4240 + 0x19 bytes C++
mfc80d.dll!CWnd::OnWndMsg(unsigned int message=15, unsigned int wParam=0, long lParam=0, long * pResult=0x00128188) Line 2028 C++
mfc80d.dll!CWnd::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 1741 + 0x20 bytes C++
ProfUIS284md.dll!CExtScrollWnd::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 4312 C++
ProfUIS284md.dll!CExtGridBaseWnd::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 12775 C++
BaseUI.dll!CExtCTA<CBaseTreeGrid>::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 2303 + 0x17 bytes C++
mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x07a07360, HWND__ * hWnd=0x000a2678, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 240 + 0x1c bytes C++
mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x000a2678, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 389 C++
mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x000a2678, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 411 + 0x15 bytes C++
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e428ea0()
user32.dll!7e428eec()
ntdll.dll!7c90e453()
user32.dll!7e4194d2()
user32.dll!7e428f10()
user32.dll!7e4274b2()
user32.dll!7e418a10()
user32.dll!7e427721()
user32.dll!7e4249c4()
user32.dll!7e43a956()
msvcr80d.dll!_output_s_l(_iobuf * stream=0x0008282a, const char * format=0x001a34e8, localeinfo_struct * plocinfo=0x001a17a8, char * argptr=0x00012012) Line 1166 + 0x17 bytes C++
user32.dll!7e4664a2()
user32.dll!7e450877()
user32.dll!7e45082f()
msvcr80d.dll!__crtMessageBoxA(const char * lpText=0x00128c70, const char * lpCaption=0x102d315c, unsigned int uType=73746) Line 168 + 0x13 bytes C
msvcr80d.dll!__crtMessageWindowA(int nRptType=2, const char * szFile=0x01bdce48, const char * szLine=0x0012ace4, const char * szModule=0x00000000, const char * szUserMessage=0x00129ce4) Line 420 + 0x16 bytes C
msvcr80d.dll!_VCrtDbgReportA(int nRptType=2, const char * szFile=0x01bdce48, int nLine=2268, const char * szModule=0x00000000, const char * szFormat=0x00000000, char * arglist=0x0012ed78) Line 420 + 0x28 bytes C
msvcr80d.dll!_CrtDbgReportV(int nRptType=2, const char * szFile=0x01bdce48, int nLine=2268, const char * szModule=0x00000000, const char * szFormat=0x00000000, char * arglist=0x0012ed78) Line 300 + 0x1d bytes C
msvcr80d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x01bdce48, int nLine=2268, const char * szModule=0x00000000, const char * szFormat=0x00000000, ...) Line 317 + 0x1d bytes C
mfc80d.dll!AfxAssertFailedLine(const char * lpszFileName=0x01bdce48, int nLine=2268) Line 25 + 0x14 bytes C++
mfc80d.dll!AfxAssertValidObject(const CObject * pOb=0x00000000, const char * lpszFileName=0x01bdce48, int nLine=2268) Line 77 + 0xd bytes C++
ProfUIS284md.dll!CExtTreeGridDataProvider::_Tree_MapRowToCache(unsigned long nRowNo=13) Line 2269 C++
ProfUIS284md.dll!CExtTreeGridDataProvider::_Tree_NodeGetByVisibleRowIndex(unsigned long nRowNo=14) Line 932 + 0x16 bytes C++
ProfUIS284md.dll!CExtTreeGridDataProvider::TreeNodeGetByVisibleRowIndex(unsigned long nRowNo=14) Line 917 + 0x16 bytes C++
ProfUIS284md.dll!CExtTreeGridWnd::ItemGetByVisibleRowIndex(long nRowNo=14) Line 3105 + 0xc bytes C++
ProfUIS284md.dll!CExtTreeGridWnd::OnSiwQueryItemExtentV(long nRowNo=13, int * p_nExtraSpaceBefore=0x00000000, int * p_nExtraSpaceAfter=0x00000000) Line 5117 + 0x16 bytes C++
ProfUIS284md.dll!CExtGridBaseWnd::OnSiwCalcPageMetrics(int nDirection=0) Line 7152 + 0x1d bytes C++
ProfUIS284md.dll!CExtScrollItemWnd::OnSwGetPageSize(int nDirection=0) Line 5554 + 0x1a bytes C++
ProfUIS284md.dll!CExtGridBaseWnd::OnSwDoScrollBy(CSize sizeScroll={...}, bool bDoScroll=true) Line 7208 + 0x18 bytes C++
ProfUIS284md.dll!CExtScrollItemWnd::OnSwDoScroll(unsigned int nScrollCode=511, unsigned int nPos=0, bool bDoScroll=true) Line 6381 + 0x33 bytes C++
ProfUIS284md.dll!CExtScrollWnd::OnVScroll(unsigned int nSBCode=1, unsigned int nPos=0, CScrollBar * pScrollBar=0x07a0865c) Line 4184 + 0x30 bytes C++
mfc80d.dll!CWnd::OnWndMsg(unsigned int message=277, unsigned int wParam=1, long lParam=665142, long * pResult=0x0012f284) Line 2118 C++
mfc80d.dll!CWnd::WindowProc(unsigned int message=277, unsigned int wParam=1, long lParam=665142) Line 1741 + 0x20 bytes C++
ProfUIS284md.dll!CExtScrollWnd::WindowProc(unsigned int message=277, unsigned int wParam=1, long lParam=665142) Line 4312 C++
ProfUIS284md.dll!CExtGridBaseWnd::WindowProc(unsigned int message=277, unsigned int wParam=1, long lParam=665142) Line 12775 C++
BaseUI.dll!CExtCTA<CBaseTreeGrid>::WindowProc(unsigned int message=277, unsigned int wParam=1, long lParam=665142) Line 2303 + 0x17 bytes C++
mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x07a07360, HWND__ * hWnd=0x000a2678, unsigned int nMsg=277, unsigned int wParam=1, long lParam=665142) Line 240 + 0x1c bytes C++
mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x000a2678, unsigned int nMsg=277, unsigned int wParam=1, long lParam=665142) Line 389 C++
mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x000a2678, unsigned int nMsg=277, unsigned int wParam=1, long lParam=665142) Line 411 + 0x15 bytes C++
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e428ea0()
user32.dll!7e428eec()
ntdll.dll!7c90e453()
user32.dll!7e4194be()
user32.dll!7e42c174()
user32.dll!7e42f40b()
ProfUIS284md.dll!CExtScrollBar::ScrollBar_TrackMouseLButtonDown(tagMSG * pMSG=0x0012f9c4) Line 2073 + 0x4b bytes C++
ProfUIS284md.dll!CExtScrollBar::ScrollBar_OnMouseClickMsg(tagMSG * pMSG=0x0012f9c4) Line 1614 + 0x16 bytes C++
ProfUIS284md.dll!CExtScrollBar::OnLButtonDown(unsigned int nFlags=1, CPoint point={...}) Line 1670 C++
mfc80d.dll!CWnd::OnWndMsg(unsigned int message=513, unsigned int wParam=1, long lParam=11993101, long * pResult=0x0012fb40) Line 2169 C++
mfc80d.dll!CWnd::WindowProc(unsigned int message=513, unsigned int wParam=1, long lParam=11993101) Line 1741 + 0x20 bytes C++
ProfUIS284md.dll!CExtScrollBar::WindowProc(unsigned int message=513, unsigned int wParam=1, long lParam=11993101) Line 441 + 0x14 bytes C++
mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x07a0865c, HWND__ * hWnd=0x000a2636, unsigned int nMsg=513, unsigned int wParam=1, long lParam=11993101) Line 240 + 0x1c bytes C++
mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x000a2636, unsigned int nMsg=513, unsigned int wParam=1, long lParam=11993101) Line 389 C++
mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x000a2636, unsigned int nMsg=513, unsigned int wParam=1, long lParam=11993101) Line 411 + 0x15 bytes C++
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e4189cd()
user32.dll!7e418a10()
user32.dll!7e4274ff()
user32.dll!7e43c6d3()
mfc80d.dll!CWnd::IsDialogMessageA(tagMSG * lpMsg=0x00159f00) Line 198 C++
mfc80d.dll!CWnd::PreTranslateInput(tagMSG * lpMsg=0x00159f00) Line 4268 C++
mfc80d.dll!CControlBar::PreTranslateMessage(tagMSG * pMsg=0x00159f00) Line 443 + 0xc bytes C++
mfc80d.dll!CWnd::WalkPreTranslateTree(HWND__ * hWndStop=0x000b254a, tagMSG * pMsg=0x00159f00) Line 2882 + 0x14 bytes C++
mfc80d.dll!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x00159f00) Line 233 + 0x12 bytes C++
mfc80d.dll!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x00159f00) Line 773 + 0x9 bytes C++
mfc80d.dll!AfxPreTranslateMessage(tagMSG * pMsg=0x00159f00) Line 252 + 0x11 bytes C++
mfc80d.dll!AfxInternalPumpMessage() Line 178 + 0x18 bytes C++
mfc80d.dll!CWinThread::PumpMessage() Line 896 C++
mfc80d.dll!CWinThread::Run() Line 625 + 0xd bytes C++
mfc80d.dll!CWinApp::Run() Line 894 C++
mfc80d.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f12, int nCmdShow=1) Line 47 + 0xd bytes C++