summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-08-08 12:57:13 -0700
committerRussell Belfer <rb@github.com>2013-08-08 12:57:13 -0700
commit7f7ebe13c458217dcae419914dd15b434f513373 (patch)
tree86b4483cca59656ba2684bc7c733da910c1d24c3
parent5e96f31638fe71a0c76805b1352f437881791d98 (diff)
parentc57f668268744cbccb13c30095a0c1649fb18a63 (diff)
downloadlibgit2-7f7ebe13c458217dcae419914dd15b434f513373.tar.gz
Merge pull request #1771 from nvloff/write_empty_config_value
config: allow setting empty string as value
-rw-r--r--src/config_file.c3
-rw-r--r--tests-clar/config/write.c17
2 files changed, 20 insertions, 0 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 570f286c8..1d7b4fb38 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -1304,6 +1304,9 @@ static char *escape_value(const char *ptr)
assert(ptr);
len = strlen(ptr);
+ if (!len)
+ return git__calloc(1, sizeof(char));
+
git_buf_grow(&buf, len);
while (*ptr != '\0') {
diff --git a/tests-clar/config/write.c b/tests-clar/config/write.c
index d70612a97..57b02a7d9 100644
--- a/tests-clar/config/write.c
+++ b/tests-clar/config/write.c
@@ -242,3 +242,20 @@ void test_config_write__can_set_a_value_to_NULL(void)
cl_git_sandbox_cleanup();
}
+
+void test_config_write__can_set_an_empty_value(void)
+{
+ git_repository *repository;
+ git_config *config;
+ const char * str;
+
+ repository = cl_git_sandbox_init("testrepo.git");
+ cl_git_pass(git_repository_config(&config, repository));
+
+ cl_git_pass(git_config_set_string(config, "core.somevar", ""));
+ cl_git_pass(git_config_get_string(&str, config, "core.somevar"));
+ cl_assert_equal_s(str, "");
+
+ git_config_free(config);
+ cl_git_sandbox_cleanup();
+}