Hi,
I have a tree with two columns. Sometimes when resizing the dialog, which resizes the tree inside (using anchors) the application crashes deep inside Prof-UIS. This only happens when making the window higher. This is the stack:
> ProfUIS284md.dll!CExtTreeGridDataProvider::_Tree_MapRowToCache(unsigned long nRowNo=13) Line 2273 C++
ProfUIS284md.dll!CExtTreeGridDataProvider::_Tree_NodeGetByVisibleRowIndex(unsigned long nRowNo=14) Line 936 + 0x16 bytes C++
ProfUIS284md.dll!CExtTreeGridDataProvider::TreeNodeGetByVisibleRowIndex(unsigned long nRowNo=14) Line 921 + 0x16 bytes C++
ProfUIS284md.dll!CExtTreeGridWnd::ItemGetByVisibleRowIndex(long nRowNo=14) Line 3109 + 0xc bytes C++
ProfUIS284md.dll!CExtTreeGridWnd::OnSiwQueryItemExtentV(long nRowNo=13, int * p_nExtraSpaceBefore=0x00000000, int * p_nExtraSpaceAfter=0x00000000) Line 5121 + 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=0x00125a0c) 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++
In this function:
ULONG CExtTreeGridDataProvider::_Tree_MapRowToCache( ULONG nRowNo ) const
{
ASSERT_VALID( this );
const CExtGridDataProvider & _DP = _Tree_GetCacheDP();
ULONG nReservedRowCount = 0;
_DP.CacheReservedCountsGet( NULL, &nReservedRowCount );
ULONG nRowCountReservedForTree = _Tree_ReservedRowsGet();
ASSERT( nReservedRowCount >= nRowCountReservedForTree );
nReservedRowCount -= nRowCountReservedForTree;
ULONG nOffset = 0;
if( nRowNo >= nReservedRowCount )
{
nRowNo -= nReservedRowCount;
ASSERT( nRowNo < ULONG(m_arrGridVis.GetSize()) );
CExtTreeGridCellNode * pNode = m_arrGridVis.GetAt( nRowNo );
ASSERT_VALID( pNode );
nOffset = pNode->TreeNodeCalcOffset( false, true );
nOffset += nReservedRowCount;
} // if( nRowNo >= nReservedRowCount )
else
nOffset = nRowNo;
return nOffset + nRowCountReservedForTree;
}
I see that pNode is NULL (8 rows from the bottom)
Please check what causes this bug, and at least how to bypass it, becuase we cannot deliver our product with this bug.
Thanks,
Ron.