[#3450] Backslashes is SQL comments don't get escaped

This commit is contained in:
Lukas Eder 2014-07-25 17:04:44 +02:00
parent d1db55a556
commit 44ac987073
2 changed files with 14 additions and 3 deletions

View File

@ -2125,7 +2125,12 @@ public class JavaGenerator extends AbstractGenerator {
}
private String escapeString(String comment) {
return comment.replace("\"", "\\\"").replace("\n", "\\n").replace("\r", "\\r");
// [#3450] Escape also the escape sequence, among other things that break Java strings.
return comment.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\n", "\\n")
.replace("\r", "\\r");
}
/**
@ -2847,7 +2852,10 @@ public class JavaGenerator extends AbstractGenerator {
* This method is used to add line breaks in lengthy javadocs
*/
protected void printJavadocParagraph(JavaWriter out, String comment, String indent) {
printParagraph(out, comment, indent + " * ");
// [#3450] Must not print */ inside Javadoc
String escaped = comment.replace("*/", "* /");
printParagraph(out, escaped, indent + " * ");
}
protected void printParagraph(GeneratorWriter<?> out, String comment, String indent) {

View File

@ -28,9 +28,12 @@ public class JavaWriter extends GeneratorWriter<JavaWriter> {
public JavaWriter javadoc(String string, Object... args) {
final int t = tab();
// [#3450] Must not print */ inside Javadoc
String escaped = string.replace("*/", "* /");
tab(t).println();
tab(t).println("/**");
tab(t).println(" * " + string, args);
tab(t).println(" * " + escaped, args);
tab(t).println(" */");
return this;