Merge pull request #4178 from libgit2/ethomson/enfasten_sha1

sha1dc: perf improvements from upstream
diff --git a/src/merge.c b/src/merge.c
index 857d513..6e00b5a 100644
--- a/src/merge.c
+++ b/src/merge.c
@@ -2018,6 +2018,26 @@
 	git_iterator_options iter_opts = GIT_ITERATOR_OPTIONS_INIT;
 	int error;
 
+	assert(out && repo);
+
+	/* if one side is treesame to the ancestor, take the other side */
+	if (ancestor_tree && merge_opts && (merge_opts->flags & GIT_MERGE_SKIP_REUC)) {
+		const git_tree *result = NULL;
+		const git_oid *ancestor_tree_id = git_tree_id(ancestor_tree);
+
+		if (our_tree && !git_oid_cmp(ancestor_tree_id, git_tree_id(our_tree)))
+			result = their_tree;
+		else if (their_tree && !git_oid_cmp(ancestor_tree_id, git_tree_id(their_tree)))
+			result = our_tree;
+
+		if (result) {
+			if ((error = git_index_new(out)) == 0)
+    			error = git_index_read_tree(*out, result);
+
+			return error;
+		}
+	}
+
 	iter_opts.flags = GIT_ITERATOR_DONT_IGNORE_CASE;
 
 	if ((error = git_iterator_for_tree(
diff --git a/tests/core/posix.c b/tests/core/posix.c
index 018d0c8..1724620 100644
--- a/tests/core/posix.c
+++ b/tests/core/posix.c
@@ -94,10 +94,7 @@
 	cl_assert(p_inet_pton(AF_INET, "10.foo.bar.1", &addr) == 0);
 
 	/* Test unsupported address families */
-	cl_git_fail(p_inet_pton(12, "52.472", &addr)); /* AF_DECnet */
-	cl_assert_equal_i(EAFNOSUPPORT, errno);
-
-	cl_git_fail(p_inet_pton(5, "315.124", &addr)); /* AF_CHAOS */
+	cl_git_fail(p_inet_pton(INT_MAX-1, "52.472", &addr));
 	cl_assert_equal_i(EAFNOSUPPORT, errno);
 }