summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java17
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java7
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) {