Skip to content

Commit e986b29

Browse files
author
emmanue1
committed
Fixed #240 : Double Quotes aren't escaped.
1 parent d850ec4 commit e986b29

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

src/main/java/org/jd/core/v1/service/converter/classfiletojavasyntax/util/ByteCodeParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@ private void parseLDC(DefaultStack<Expression> stack, ConstantPool constants, in
10431043
break;
10441044
case Constant.CONSTANT_String:
10451045
int stringIndex = ((ConstantString)constant).getStringIndex();
1046-
stack.push(new StringConstantExpression(lineNumber, StringUtil.escapeString(constants.getConstantString(stringIndex))));
1046+
stack.push(new StringConstantExpression(lineNumber, constants.getConstantString(stringIndex)));
10471047
break;
10481048
}
10491049
}

src/main/java/org/jd/core/v1/service/converter/classfiletojavasyntax/util/StringUtil.java renamed to src/main/java/org/jd/core/v1/service/fragmenter/javasyntaxtojavafragment/util/StringUtil.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@
55
* copy and modify the code freely for non-commercial purposes.
66
*/
77

8-
package org.jd.core.v1.service.converter.classfiletojavasyntax.util;
8+
package org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.util;
99

1010

1111
public class StringUtil {
1212

1313
public static String escapeString(String s) {
1414
int length = s.length();
15-
int i = 0;
1615

17-
for (; i < length; i++) {
16+
for (int i = 0; i < length; i++) {
1817
char c = s.charAt(i);
1918

20-
if ((c == '\\') || (c < ' ')) {
21-
StringBuilder sb = new StringBuilder(length * 2 + 2);
19+
if ((c == '\\') || (c == '"') || (c < ' ')) {
20+
StringBuilder sb = new StringBuilder(length * 2);
2221

2322
sb.append(s.substring(0, i));
2423

src/main/java/org/jd/core/v1/service/fragmenter/javasyntaxtojavafragment/visitor/ExpressionVisitor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.jd.core.v1.service.converter.classfiletojavasyntax.util.PrimitiveTypeUtil;
2525
import org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.util.CharacterUtil;
2626
import org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.util.JavaFragmentFactory;
27+
import org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.util.StringUtil;
2728
import org.jd.core.v1.util.DefaultList;
2829

2930
import java.util.HashSet;
@@ -529,7 +530,7 @@ public void visit(PreOperatorExpression expression) {
529530
@Override
530531
public void visit(StringConstantExpression expression) {
531532
tokens.addLineNumberToken(expression);
532-
tokens.add(new StringConstantToken(expression.getString(), currentInternalTypeName));
533+
tokens.add(new StringConstantToken(StringUtil.escapeString(expression.getString()), currentInternalTypeName));
533534
}
534535

535536
@Override

0 commit comments

Comments
 (0)