summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <vicent@github.com>2014-08-09 12:24:02 +0200
committerVicent Marti <vicent@github.com>2014-08-09 12:24:02 +0200
commit59403f1ff55346c64bfaa0744ea7f3375da71725 (patch)
tree931ad3d194ae82be8fecb861a514ef8c912bef33
parentbb9e6028b8ec54c01b35f838e8eca7c81d4b751a (diff)
parent9dac1f957945f706f3f557ff0b964f3d33d761b4 (diff)
downloadlibgit2-59403f1ff55346c64bfaa0744ea7f3375da71725.tar.gz
Merge pull request #2509 from libgit2/cmn/immediate-multiline
config: a multiline var can start immediately
-rw-r--r--src/config_file.c2
-rw-r--r--tests/config/stress.c13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 393a0b547..7106f18db 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -1649,7 +1649,7 @@ static int is_multiline_var(const char *str)
}
/* An odd number means last backslash wasn't escaped, so it's multiline */
- return (end > str) && (count & 1);
+ return count & 1;
}
static int parse_multiline_variable(struct reader *reader, git_buf *value, int in_quotes)
diff --git a/tests/config/stress.c b/tests/config/stress.c
index eeca54ff4..488915e79 100644
--- a/tests/config/stress.c
+++ b/tests/config/stress.c
@@ -90,3 +90,16 @@ void test_config_stress__trailing_backslash(void)
cl_assert_equal_s(path, str);
git_config_free(config);
}
+
+void test_config_stress__complex(void)
+{
+ git_config *config;
+ const char *str;
+ const char *path = "./config-immediate-multiline";
+
+ cl_git_mkfile(path, "[imm]\n multi = \"\\\nfoo\"");
+ cl_git_pass(git_config_open_ondisk(&config, path));
+ cl_git_pass(git_config_get_string(&str, config, "imm.multi"));
+ cl_assert_equal_s(str, "foo");
+ git_config_free(config);
+}