refs: Fix a logic error

I encountered the Opening remotes/ dir error with some broken pull code, and this fixes it.

Closes: #358
Approved by: cgwalters
This commit is contained in:
Mathnerd314 authored and Atomic Bot committed 2016-06-22 20:15:42 +00:00
1 parent 23049bbd01
commit 9a779563bb
1 file changed
+12 -7
+12 -7
View File
@@ -809,8 +809,10 @@ _ostree_repo_write_ref (OstreeRepo *self,
goto out; goto out;
} }
if (!glnx_opendirat (refs_remotes_dfd, remote, TRUE, &dfd, error)) dfd = glnx_opendirat_with_errno (refs_remotes_dfd, remote, TRUE);
if (dfd < 0 && (errno != ENOENT || rev != NULL))
{ {
glnx_set_error_from_errno (error);
g_prefix_error (error, "Opening remotes/ dir %s: ", remote); g_prefix_error (error, "Opening remotes/ dir %s: ", remote);
goto out; goto out;
} }
@@ -818,13 +820,16 @@ _ostree_repo_write_ref (OstreeRepo *self,
if (rev == NULL) if (rev == NULL)
{ {
if (unlinkat (dfd, ref, 0) != 0) if (dfd >= 0)
{ {
if (errno != ENOENT) if (unlinkat (dfd, ref, 0) != 0)
{ {
glnx_set_error_from_errno (error); if (errno != ENOENT)
goto out; {
} glnx_set_error_from_errno (error);
goto out;
}
}
} }
} }
else else