diff --git a/ChangeLog b/ChangeLog
index e26e51b..5a0b777 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2007-06-22  Scott James Remnant  <scott@netsplit.com>
+
+	* nih/tests/test_tree.c (test_next, test_prev, test_next_pre)
+	(test_prev_pre, test_next_post, test_pre_post): Add tests for a
+	single-node tree, because we found a bug where it didn't work.
+	* nih/tree.c (nih_tree_next): Bug fix; check there is a right node
+	before checking whether we've returned from it, otherwise we could
+	confuse it with starting at the top of the tree.
+	(nih_tree_prev): Likewise check there is a left node before checking
+	whether we've returned from it.
+
 2007-06-20  Scott James Remnant  <scott@netsplit.com>
 
 	* nih/config.c (nih_config_parse_stanza): Free name after use.
diff --git a/nih/tests/test_tree.c b/nih/tests/test_tree.c
index 5b65220..4a86c3d 100644
--- a/nih/tests/test_tree.c
+++ b/nih/tests/test_tree.c
@@ -530,6 +530,19 @@
 
 	for (i = 0; i < 12; i++)
 		nih_free (node[i]);
+
+
+	/* Check that we can iterate a tree with a single node. */
+	TEST_FEATURE ("with single node");
+	node[0] = nih_tree_new (NULL);
+
+	ptr = nih_tree_next (node[0], NULL);
+	TEST_EQ_P (ptr, node[0]);
+
+	ptr = nih_tree_next (node[0], ptr);
+	TEST_EQ_P (ptr, NULL);
+
+	nih_free (node[0]);
 }
 
 void
@@ -712,6 +725,19 @@
 
 	for (i = 0; i < 12; i++)
 		nih_free (node[i]);
+
+
+	/* Check that we can iterate a tree with a single node. */
+	TEST_FEATURE ("with single node");
+	node[0] = nih_tree_new (NULL);
+
+	ptr = nih_tree_prev (node[0], NULL);
+	TEST_EQ_P (ptr, node[0]);
+
+	ptr = nih_tree_prev (node[0], ptr);
+	TEST_EQ_P (ptr, NULL);
+
+	nih_free (node[0]);
 }
 
 
@@ -808,6 +834,19 @@
 
 	for (i = 0; i < 12; i++)
 		nih_free (node[i]);
+
+
+	/* Check that we can iterate a tree with a single node. */
+	TEST_FEATURE ("with single node");
+	node[0] = nih_tree_new (NULL);
+
+	ptr = nih_tree_next_pre (node[0], NULL);
+	TEST_EQ_P (ptr, node[0]);
+
+	ptr = nih_tree_next_pre (node[0], ptr);
+	TEST_EQ_P (ptr, NULL);
+
+	nih_free (node[0]);
 }
 
 void
@@ -990,6 +1029,19 @@
 
 	for (i = 0; i < 12; i++)
 		nih_free (node[i]);
+
+
+	/* Check that we can iterate a tree with a single node. */
+	TEST_FEATURE ("with single node");
+	node[0] = nih_tree_new (NULL);
+
+	ptr = nih_tree_prev_pre (node[0], NULL);
+	TEST_EQ_P (ptr, node[0]);
+
+	ptr = nih_tree_prev_pre (node[0], ptr);
+	TEST_EQ_P (ptr, NULL);
+
+	nih_free (node[0]);
 }
 
 
@@ -1086,6 +1138,19 @@
 
 	for (i = 0; i < 12; i++)
 		nih_free (node[i]);
+
+
+	/* Check that we can iterate a tree with a single node. */
+	TEST_FEATURE ("with single node");
+	node[0] = nih_tree_new (NULL);
+
+	ptr = nih_tree_next_post (node[0], NULL);
+	TEST_EQ_P (ptr, node[0]);
+
+	ptr = nih_tree_next_post (node[0], ptr);
+	TEST_EQ_P (ptr, NULL);
+
+	nih_free (node[0]);
 }
 
 void
@@ -1268,6 +1333,19 @@
 
 	for (i = 0; i < 12; i++)
 		nih_free (node[i]);
+
+
+	/* Check that we can iterate a tree with a single node. */
+	TEST_FEATURE ("with single node");
+	node[0] = nih_tree_new (NULL);
+
+	ptr = nih_tree_prev_post (node[0], NULL);
+	TEST_EQ_P (ptr, node[0]);
+
+	ptr = nih_tree_prev_post (node[0], ptr);
+	TEST_EQ_P (ptr, NULL);
+
+	nih_free (node[0]);
 }
 
 
diff --git a/nih/tree.c b/nih/tree.c
index fd6ff58..ea1ee28 100644
--- a/nih/tree.c
+++ b/nih/tree.c
@@ -313,7 +313,7 @@
 
 		if ((prev == node->parent) && node->left) {
 			node = node->left;
-		} else if (prev == node->right) {
+		} else if (node->right && (prev == node->right)) {
 			if (node == tree)
 				return NULL;
 
@@ -368,7 +368,7 @@
 
 		if ((prev == node->parent) && node->right) {
 			node = node->right;
-		} else if (prev == node->left) {
+		} else if (node->left && (prev == node->left)) {
 			if (node == tree)
 				return NULL;
 
