Commit 1f61e301 by Vicent Martí

Merge pull request #287 from kiryl/development

filebuf: fix endless loop on writing buf > WRITE_BUFFER_SIZE
parents 02bc2d2f fe5babac
...@@ -331,6 +331,7 @@ int git_filebuf_write(git_filebuf *file, const void *buff, size_t len) ...@@ -331,6 +331,7 @@ int git_filebuf_write(git_filebuf *file, const void *buff, size_t len)
error = file->write(file, buf, len); error = file->write(file, buf, len);
if (error < GIT_SUCCESS) if (error < GIT_SUCCESS)
return git__rethrow(error, "Failed to write to buffer"); return git__rethrow(error, "Failed to write to buffer");
return GIT_SUCCESS;
} }
} }
} }
......
...@@ -692,6 +692,19 @@ BEGIN_TEST(filebuf1, "make sure GIT_FILEBUF_APPEND works as expected") ...@@ -692,6 +692,19 @@ BEGIN_TEST(filebuf1, "make sure GIT_FILEBUF_APPEND works as expected")
must_pass(gitfo_unlink(test)); must_pass(gitfo_unlink(test));
END_TEST END_TEST
BEGIN_TEST(filebuf2, "make sure git_filebuf_write writes large buffer correctly")
git_filebuf file;
char test[] = "test";
unsigned char buf[4096 * 4]; /* 2 * WRITE_BUFFER_SIZE */
memset(buf, 0xfe, sizeof(buf));
must_pass(git_filebuf_open(&file, test, 0));
must_pass(git_filebuf_write(&file, buf, sizeof(buf)));
must_pass(git_filebuf_commit(&file));
must_pass(gitfo_unlink(test));
END_TEST
BEGIN_SUITE(core) BEGIN_SUITE(core)
ADD_TEST(string0); ADD_TEST(string0);
ADD_TEST(string1); ADD_TEST(string1);
...@@ -716,4 +729,5 @@ BEGIN_SUITE(core) ...@@ -716,4 +729,5 @@ BEGIN_SUITE(core)
ADD_TEST(filebuf0); ADD_TEST(filebuf0);
ADD_TEST(filebuf1); ADD_TEST(filebuf1);
ADD_TEST(filebuf2);
END_SUITE END_SUITE
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment