112390 - [Viewers] JUnit error in JFacePerformanceSuite
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
index 112c6d9..2d11eaf 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
@@ -1202,8 +1202,11 @@
 int findIndex (int hFirstItem, int hItem) {
 	if (hFirstItem == 0) return -1;
 	if (hFirstItem == hFirstIndexOf) {
-		if (hFirstIndexOf == hItem) return 0;
 		if (hLastIndexOf == hItem) return lastIndexOf;
+		if (hFirstIndexOf == hItem) {
+			hLastIndexOf = hFirstIndexOf;
+			return lastIndexOf = 0;
+		}
 		int hPrevItem = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_PREVIOUS, hLastIndexOf);
 		if (hPrevItem == hItem) {
 			hLastIndexOf = hPrevItem;
@@ -1260,8 +1263,11 @@
 int findItem (int hFirstItem, int index) {
 	if (hFirstItem == 0) return 0;
 	if (hFirstItem == hFirstIndexOf) {
-		if (index == 0) return hFirstItem;
 		if (lastIndexOf == index) return hLastIndexOf;
+		if (index == 0) {
+			lastIndexOf = 0;
+			return hLastIndexOf = hFirstIndexOf;
+		}
 		if (lastIndexOf - 1 == index) {
 			--lastIndexOf;
 			return hLastIndexOf = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_PREVIOUS, hLastIndexOf);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
index 1a6e15c..78320ca 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
@@ -201,27 +201,23 @@
 static int findPrevious (Tree parent, int index) {
 	if (parent == null) return 0;
 	if (index < 0) SWT.error (SWT.ERROR_INVALID_RANGE);
-	int hItem = OS.TVI_FIRST;
-	if (index != 0) {
-		int hwnd = parent.handle;
-		int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_ROOT, 0);
-		hItem = parent.findItem (hFirstItem, index - 1);
-		if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
-	}
+	if (index == 0) return OS.TVI_FIRST;
+	int hwnd = parent.handle;
+	int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_ROOT, 0);
+	int hItem = parent.findItem (hFirstItem, index - 1);
+	if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
 	return hItem;
 }
 
 static int findPrevious (TreeItem parentItem, int index) {
 	if (parentItem == null) return 0;
 	if (index < 0) SWT.error (SWT.ERROR_INVALID_RANGE);
+	if (index == 0) return OS.TVI_FIRST;
 	Tree parent = parentItem.parent;
-	int hItem = OS.TVI_FIRST, hParent = parentItem.handle;
-	if (index != 0) {
-		int hwnd = parent.handle;
-		int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hParent);
-		hItem = parent.findItem (hFirstItem, index - 1);
-		if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
-	}
+	int hwnd = parent.handle, hParent = parentItem.handle;
+	int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hParent);
+	int hItem = parent.findItem (hFirstItem, index - 1);
+	if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
 	return hItem;
 }