mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
Config parsing confused by continuations that start with quotes
(fixes issue #6089) Signed-off-by: Sven Strickroth <email@cs-ware.de>
This commit is contained in:
@@ -36,7 +36,7 @@ static int strip_comments(char *line, int in_quotes)
|
||||
char *ptr;
|
||||
|
||||
for (ptr = line; *ptr; ++ptr) {
|
||||
if (ptr[0] == '"' && ptr > line && ptr[-1] != '\\')
|
||||
if (ptr[0] == '"' && ((ptr > line && ptr[-1] != '\\') || ptr == line))
|
||||
quote_count++;
|
||||
|
||||
if ((ptr[0] == ';' || ptr[0] == '#') &&
|
||||
|
||||
@@ -219,6 +219,19 @@ void test_config_read__multiline_multiple_quoted_comment_chars(void)
|
||||
git_config_free(cfg);
|
||||
}
|
||||
|
||||
void test_config_read__multiline_multiple_quoted_quote_at_beginning_of_line(void)
|
||||
{
|
||||
git_config* cfg;
|
||||
cl_git_pass(git_config_open_ondisk(&cfg, cl_fixture("config/config22")));
|
||||
cl_git_pass(git_config_get_string_buf(&buf, cfg, "alias.m"));
|
||||
cl_assert_equal_s("cmd ;; ;; bar", buf.ptr);
|
||||
git_buf_dispose(&buf);
|
||||
cl_git_pass(git_config_get_string_buf(&buf, cfg, "alias.m2"));
|
||||
cl_assert_equal_s("'; ; something '", buf.ptr);
|
||||
git_buf_dispose(&buf);
|
||||
git_config_free(cfg);
|
||||
}
|
||||
|
||||
void test_config_read__header_in_last_line(void)
|
||||
{
|
||||
git_config *cfg;
|
||||
|
||||
10
tests/resources/config/config22
vendored
Normal file
10
tests/resources/config/config22
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
[alias]
|
||||
m = cmd \
|
||||
";;" \
|
||||
";;" \
|
||||
bar
|
||||
m2 = '\
|
||||
";" \
|
||||
";" \
|
||||
something \
|
||||
'
|
||||
Reference in New Issue
Block a user