oops
diff --git a/src/tree.c b/src/tree.c
index 43eefa5..714f9c7 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -1159,8 +1159,8 @@
 		goto cleanup;
 
 	for (i = 0; i < nupdates; i++) {
-		const git_tree_update *last_update = i == 0 ? NULL : &updates[i-1];
-		const git_tree_update *update = &updates[i];
+		const git_tree_update *last_update = i == 0 ? NULL : git_vector_get(&entries, i-1);
+		const git_tree_update *update = git_vector_get(&entries, i);
 		size_t common_prefix = 0, steps_up, j;
 		const char *path;
 
diff --git a/tests/object/tree/update.c b/tests/object/tree/update.c
index b38646a..0e13982 100644
--- a/tests/object/tree/update.c
+++ b/tests/object/tree/update.c
@@ -190,7 +190,7 @@
 		git_index_free(idx);
 
 		/* Perform the same operations via the tree updater */
-		cl_git_pass(git_tree_create_updated(&tree_updater_id, g_repo, base_tree, 3, updates));
+		cl_git_pass(git_tree_create_updated(&tree_updater_id, g_repo, base_tree, 4, updates));
 
 		cl_assert_equal_oid(&tree_index_id, &tree_updater_id);
 	}