Skip to content

Commit fef37ed

Browse files
author
emmanue1
committed
Prevent NPE caused by JD-Core errors
1 parent bdcff86 commit fef37ed

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

services/src/main/java/org/jd/gui/util/decompiler/StringBuilderPrinter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class StringBuilderPrinter implements Printer {
3333
public void append(String s) { stringBuffer.append(s); }
3434

3535
protected void printEscape(String s) {
36-
if (unicodeEscape) {
36+
if (unicodeEscape && (s != null)) {
3737
int length = s.length();
3838

3939
for (int i=0; i<length; i++) {

services/src/main/java/org/jd/gui/view/component/ClassFilePage.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,21 @@ public void start(int maxLineNumber, int majorVersion, int minorVersion) {
155155
}
156156

157157
// --- Add strings --- //
158-
@Override public void printStringConstant(String constant, String ownerInternalName) {
158+
@Override
159+
public void printStringConstant(String constant, String ownerInternalName) {
160+
if (constant == null) constant = "null";
161+
if (ownerInternalName == null) ownerInternalName = "null";
162+
159163
strings.add(new TypePage.StringData(stringBuffer.length(), constant.length(), constant, ownerInternalName));
160164
super.printStringConstant(constant, ownerInternalName);
161165
}
162166

163-
@Override public void printDeclaration(int flags, String internalTypeName, String name, String descriptor) {
167+
@Override
168+
public void printDeclaration(int flags, String internalTypeName, String name, String descriptor) {
169+
if (internalTypeName == null) internalTypeName = "null";
170+
if (name == null) name = "null";
171+
if (descriptor == null) descriptor = "null";
172+
164173
switch (flags) {
165174
case TYPE_FLAG:
166175
TypePage.DeclarationData data = new TypePage.DeclarationData(stringBuffer.length(), name.length(), internalTypeName, null, null);
@@ -177,7 +186,12 @@ public void start(int maxLineNumber, int majorVersion, int minorVersion) {
177186
super.printDeclaration(flags, internalTypeName, name, descriptor);
178187
}
179188

180-
@Override public void printReference(int flags, String internalTypeName, String name, String descriptor, String ownerInternalName) {
189+
@Override
190+
public void printReference(int flags, String internalTypeName, String name, String descriptor, String ownerInternalName) {
191+
if (internalTypeName == null) internalTypeName = "null";
192+
if (name == null) name = "null";
193+
if (descriptor == null) descriptor = "null";
194+
181195
switch (flags) {
182196
case TYPE_FLAG:
183197
addHyperlink(new TypePage.HyperlinkReferenceData(stringBuffer.length(), name.length(), newReferenceData(internalTypeName, null, null, ownerInternalName)));
@@ -192,11 +206,13 @@ public void start(int maxLineNumber, int majorVersion, int minorVersion) {
192206
super.printReference(flags, internalTypeName, name, descriptor, ownerInternalName);
193207
}
194208

195-
@Override public void startLine(int lineNumber) {
209+
@Override
210+
public void startLine(int lineNumber) {
196211
super.startLine(lineNumber);
197212
setLineNumber(textAreaLineNumber, lineNumber);
198213
}
199-
@Override public void endLine() {
214+
@Override
215+
public void endLine() {
200216
super.endLine();
201217
textAreaLineNumber++;
202218
}

0 commit comments

Comments
 (0)