diff -r d6dafc5d983f -r 1627c337e51e javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Tree.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Tree.java Fri Oct 15 12:29:39 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Tree.java Fri Oct 29 11:49:32 2010 +0300 @@ -978,8 +978,11 @@ void releaseChildren_pp(boolean destroy) { if (topLevelItems != null) { for (int i = topLevelItemCount-1; i >= 0; i--) { - TreeItem item = _getItem(i); - if(item.cached){ + // Cannot use _getItem here, since in a VIRTUAL style Tree it may cause + // creating a new TreeItem, which doesn't make sense when trying to release + // all children. + TreeItem item = topLevelItems[i]; + if(item != null && item.cached){ if (item != null && !item.isDisposed() ) { item.childrenItemCount = 0; item.childrenItems = null;