You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2017/12/30 14:04:47 UTC

svn commit: r1819603 - in /subversion/trunk/subversion: libsvn_subr/config_file.c tests/libsvn_subr/config-test.c tests/libsvn_subr/config-test.cfg

Author: brane
Date: Sat Dec 30 14:04:47 2017
New Revision: 1819603

URL: http://svn.apache.org/viewvc?rev=1819603&view=rev
Log:
Fix a bug in the config parser that caused it to strip leading characters
from value continuation lines.

* subversion/libsvn_subr/config_file.c (parse_value_continuation_lines):
   Return the last read char to the buffer before reading the whole line.

* subversion/tests/libsvn_subr/config-test.cfg (m): New multi-line option.
* subversion/tests/libsvn_subr/config-test.c (config_keys, config_values):
   Add expected values for the new multi-line opition in the test data.

Tested by: danielsh

Modified:
    subversion/trunk/subversion/libsvn_subr/config_file.c
    subversion/trunk/subversion/tests/libsvn_subr/config-test.c
    subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg

Modified: subversion/trunk/subversion/libsvn_subr/config_file.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config_file.c?rev=1819603&r1=1819602&r2=1819603&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/config_file.c (original)
+++ subversion/trunk/subversion/libsvn_subr/config_file.c Sat Dec 30 14:04:47 2017
@@ -466,6 +466,7 @@ parse_value_continuation_lines(int *pch,
               else
                 {
                   /* This is a continuation line. Read it. */
+                  SVN_ERR(parser_ungetc(ctx, ch));
                   SVN_ERR(parser_get_line(ctx, ctx->line_read, &ch));
 
                   /* Trailing whitespace is ignored. */

Modified: subversion/trunk/subversion/tests/libsvn_subr/config-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/config-test.c?rev=1819603&r1=1819602&r2=1819603&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/config-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/config-test.c Sat Dec 30 14:04:47 2017
@@ -70,12 +70,12 @@ get_config_file_path(const char **cfg_fi
 }
 
 static const char *config_keys[] = { "foo", "a", "b", "c", "d", "e", "f", "g",
-                                     "h", "i", NULL };
+                                     "h", "i", "m", NULL };
 static const char *config_values[] = { "bar", "Aa", "100", "bar",
                                        "a %(bogus)s oyster bar",
                                        "%(bogus)s shmoo %(",
                                        "%Aa", "lyrical bard", "%(unterminated",
-                                       "Aa 100", NULL };
+                                       "Aa 100", "foo bar baz", NULL };
 
 static svn_error_t *
 test_text_retrieval(const svn_test_opts_t *opts,

Modified: subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg?rev=1819603&r1=1819602&r2=1819603&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/config-test.cfg Sat Dec 30 14:04:47 2017
@@ -45,6 +45,10 @@ j=some %(k)scle
 k=c%(j)sy
 # Depends on a cyclic definition
 l=depends on a %(j)scycle!
+# line continuation
+m = foo
+ bar
+  baz
 
 [UpperCaseSection]
 a=Aa