diff options
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java | 17 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java | 7 |
2 files changed, 13 insertions, 11 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java index a952db764f..2609f6745e 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java @@ -1056,16 +1056,17 @@ public class ConfigTest { public void testParseInvalidSubsections() { assertInvalidSubsection( JGitText.get().newlineInQuotesNotAllowed, "\"x\ny\""); - assertInvalidSubsection( - MessageFormat.format(JGitText.get().badEscape, 'q'), "\"x\\q\""); + } + @Test + public void testDropBackslashFromInvalidEscapeSequenceInSubsectionName() + throws ConfigInvalidException { + assertEquals("x0", parseEscapedSubsection("\"x\\0\"")); + assertEquals("xq", parseEscapedSubsection("\"x\\q\"")); // Unlike for values, \b, \n, and \t are not valid escape sequences. - assertInvalidSubsection( - MessageFormat.format(JGitText.get().badEscape, 'b'), "\"x\\b\""); - assertInvalidSubsection( - MessageFormat.format(JGitText.get().badEscape, 'n'), "\"x\\n\""); - assertInvalidSubsection( - MessageFormat.format(JGitText.get().badEscape, 't'), "\"x\\t\""); + assertEquals("xb", parseEscapedSubsection("\"x\\b\"")); + assertEquals("xn", parseEscapedSubsection("\"x\\n\"")); + assertEquals("xt", parseEscapedSubsection("\"x\\t\"")); } private static void assertValueRoundTrip(String value) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java index f46b7f37a8..a6313f0cc5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -1315,9 +1315,10 @@ public class Config { continue; default: - throw new ConfigInvalidException(MessageFormat.format( - JGitText.get().badEscape, - Character.valueOf(((char) c)))); + // C git simply drops backslashes if the escape sequence is not + // recognized. + r.append((char) c); + continue; } } if ('"' == c) { |