Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't be decompiled - Cannot invoke String.isEmpty() #432

Open
aoqia194 opened this issue Sep 22, 2024 · 0 comments
Open

Can't be decompiled - Cannot invoke String.isEmpty() #432

aoqia194 opened this issue Sep 22, 2024 · 0 comments

Comments

@aoqia194
Copy link

Vineflower version

1.10.1

Describe the bug

The decompiler failed to decompile some things. I do not have the rights to distribute the original .java file, so I am sorry for the abstraction of details in this report. Even though this is the case, I am still posting this to be of some help.

Additional information

// $VF: Couldn't be decompiled
// Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
// java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "keyField" is null
//   at org.jetbrains.java.decompiler.main.ClassesProcessor.processClass(ClassesProcessor.java:439)
//   at org.jetbrains.java.decompiler.main.Fernflower.processClass(Fernflower.java:183)
//   at org.jetbrains.java.decompiler.struct.ContextUnit.lambda$save$2(ContextUnit.java:164)
// Caused by: java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "keyField" is null
//   at org.jetbrains.java.decompiler.main.rels.NestedClassProcessor.getMaskLocalVars(NestedClassProcessor.java:747)
//   at org.jetbrains.java.decompiler.main.rels.NestedClassProcessor.computeLocalVarsAndDefinitions(NestedClassProcessor.java:338)
//   at org.jetbrains.java.decompiler.main.rels.NestedClassProcessor.processClass(NestedClassProcessor.java:67)
//   at org.jetbrains.java.decompiler.main.ClassesProcessor.processClass(ClassesProcessor.java:431)
//   at org.jetbrains.java.decompiler.main.Fernflower.processClass(Fernflower.java:183)
//   at org.jetbrains.java.decompiler.struct.ContextUnit.lambda$save$2(ContextUnit.java:164)
// $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.IllegalStateException: No successor exists for {If}:36
      //   at org.jetbrains.java.decompiler.modules.decompiler.stats.Statement.getFirstSuccessor(Statement.java:834)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfNode.build(IfNode.java:90)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeIfs(IfHelper.java:75)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:38)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfsRec(IfHelper.java:35)
      //   at org.jetbrains.java.decompiler.modules.decompiler.IfHelper.mergeAllIfs(IfHelper.java:20)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:280)
      //
      // Bytecode:
      // 000: bipush 50
      // 002: anewarray 50
      // 005: astore 6
      // 007: bipush 0
      // 008: istore 7
      // 00a: iload 7
      // 00c: aload 6
      // 00e: arraylength
      // 00f: if_icmpge 024
      // 012: aload 6
      // 014: iload 7
      // 016: new org/lwjglx/util/glu/tessellation/PriorityQSort$Stack
      // 019: dup
      // 01a: invokespecial org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.<init> ()V
      // 01d: aastore
      // 01e: iinc 7 1
      // 021: goto 00a
      // 024: bipush 0
      // 025: istore 7
      // 027: ldc 2016473283
      // 029: istore 8
      // 02b: aload 0
      // 02c: aload 0
      // 02d: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.size I
      // 030: bipush 1
      // 031: iadd
      // 032: newarray 10
      // 034: putfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 037: bipush 0
      // 038: istore 1
      // 039: aload 0
      // 03a: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.size I
      // 03d: bipush 1
      // 03e: isub
      // 03f: istore 2
      // 040: bipush 0
      // 041: istore 5
      // 043: iload 1
      // 044: istore 3
      // 045: iload 3
      // 046: iload 2
      // 047: if_icmpgt 05b
      // 04a: aload 0
      // 04b: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 04e: iload 3
      // 04f: iload 5
      // 051: iastore
      // 052: iinc 5 1
      // 055: iinc 3 1
      // 058: goto 045
      // 05b: aload 6
      // 05d: iload 7
      // 05f: aaload
      // 060: iload 1
      // 061: putfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.p I
      // 064: aload 6
      // 066: iload 7
      // 068: aaload
      // 069: iload 2
      // 06a: putfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.r I
      // 06d: iinc 7 1
      // 070: iinc 7 -1
      // 073: iload 7
      // 075: iflt 1cd
      // 078: aload 6
      // 07a: iload 7
      // 07c: aaload
      // 07d: getfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.p I
      // 080: istore 1
      // 081: aload 6
      // 083: iload 7
      // 085: aaload
      // 086: getfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.r I
      // 089: istore 2
      // 08a: iload 2
      // 08b: iload 1
      // 08c: bipush 10
      // 08e: iadd
      // 08f: if_icmple 16f
      // 092: iload 8
      // 094: ldc 1539415821
      // 096: imul
      // 097: bipush 1
      // 098: iadd
      // 099: invokestatic java/lang/Math.abs (I)I
      // 09c: istore 8
      // 09e: iload 1
      // 09f: iload 8
      // 0a1: iload 2
      // 0a2: iload 1
      // 0a3: isub
      // 0a4: bipush 1
      // 0a5: iadd
      // 0a6: irem
      // 0a7: iadd
      // 0a8: istore 3
      // 0a9: aload 0
      // 0aa: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 0ad: iload 3
      // 0ae: iaload
      // 0af: istore 5
      // 0b1: aload 0
      // 0b2: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 0b5: iload 3
      // 0b6: aload 0
      // 0b7: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 0ba: iload 1
      // 0bb: iaload
      // 0bc: iastore
      // 0bd: aload 0
      // 0be: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 0c1: iload 1
      // 0c2: iload 5
      // 0c4: iastore
      // 0c5: iload 1
      // 0c6: bipush 1
      // 0c7: isub
      // 0c8: istore 3
      // 0c9: iload 2
      // 0ca: bipush 1
      // 0cb: iadd
      // 0cc: istore 4
      // 0ce: iinc 3 1
      // 0d1: aload 0
      // 0d2: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.leq Lorg/lwjglx/util/glu/tessellation/PriorityQ$Leq;
      // 0d5: aload 0
      // 0d6: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.keys [Ljava/lang/Object;
      // 0d9: aload 0
      // 0da: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 0dd: iload 3
      // 0de: iaload
      // 0df: aaload
      // 0e0: aload 0
      // 0e1: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.keys [Ljava/lang/Object;
      // 0e4: iload 5
      // 0e6: aaload
      // 0e7: invokestatic org/lwjglx/util/glu/tessellation/PriorityQSort.GT (Lorg/lwjglx/util/glu/tessellation/PriorityQ$Leq;Ljava/lang/Object;Ljava/lang/Object;)Z
      // 0ea: ifne 0ce
      // 0ed: iinc 4 -1
      // 0f0: aload 0
      // 0f1: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.leq Lorg/lwjglx/util/glu/tessellation/PriorityQ$Leq;
      // 0f4: aload 0
      // 0f5: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.keys [Ljava/lang/Object;
      // 0f8: aload 0
      // 0f9: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 0fc: iload 4
      // 0fe: iaload
      // 0ff: aaload
      // 100: aload 0
      // 101: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.keys [Ljava/lang/Object;
      // 104: iload 5
      // 106: aaload
      // 107: invokestatic org/lwjglx/util/glu/tessellation/PriorityQSort.LT (Lorg/lwjglx/util/glu/tessellation/PriorityQ$Leq;Ljava/lang/Object;Ljava/lang/Object;)Z
      // 10a: ifne 0ed
      // 10d: aload 0
      // 10e: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 111: iload 3
      // 112: iload 4
      // 114: invokestatic org/lwjglx/util/glu/tessellation/PriorityQSort.Swap ([III)V
      // 117: iload 3
      // 118: iload 4
      // 11a: if_icmplt 0ce
      // 11d: aload 0
      // 11e: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 121: iload 3
      // 122: iload 4
      // 124: invokestatic org/lwjglx/util/glu/tessellation/PriorityQSort.Swap ([III)V
      // 127: iload 3
      // 128: iload 1
      // 129: isub
      // 12a: iload 2
      // 12b: iload 4
      // 12d: isub
      // 12e: if_icmpge 150
      // 131: aload 6
      // 133: iload 7
      // 135: aaload
      // 136: iload 4
      // 138: bipush 1
      // 139: iadd
      // 13a: putfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.p I
      // 13d: aload 6
      // 13f: iload 7
      // 141: aaload
      // 142: iload 2
      // 143: putfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.r I
      // 146: iinc 7 1
      // 149: iload 3
      // 14a: bipush 1
      // 14b: isub
      // 14c: istore 2
      // 14d: goto 08a
      // 150: aload 6
      // 152: iload 7
      // 154: aaload
      // 155: iload 1
      // 156: putfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.p I
      // 159: aload 6
      // 15b: iload 7
      // 15d: aaload
      // 15e: iload 3
      // 15f: bipush 1
      // 160: isub
      // 161: putfield org/lwjglx/util/glu/tessellation/PriorityQSort$Stack.r I
      // 164: iinc 7 1
      // 167: iload 4
      // 169: bipush 1
      // 16a: iadd
      // 16b: istore 1
      // 16c: goto 08a
      // 16f: iload 1
      // 170: bipush 1
      // 171: iadd
      // 172: istore 3
      // 173: iload 3
      // 174: iload 2
      // 175: if_icmpgt 070
      // 178: aload 0
      // 179: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 17c: iload 3
      // 17d: iaload
      // 17e: istore 5
      // 180: iload 3
      // 181: istore 4
      // 183: iload 4
      // 185: iload 1
      // 186: if_icmple 1be
      // 189: aload 0
      // 18a: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.leq Lorg/lwjglx/util/glu/tessellation/PriorityQ$Leq;
      // 18d: aload 0
      // 18e: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.keys [Ljava/lang/Object;
      // 191: aload 0
      // 192: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 195: iload 4
      // 197: bipush 1
      // 198: isub
      // 199: iaload
      // 19a: aaload
      // 19b: aload 0
      // 19c: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.keys [Ljava/lang/Object;
      // 19f: iload 5
      // 1a1: aaload
      // 1a2: invokestatic org/lwjglx/util/glu/tessellation/PriorityQSort.LT (Lorg/lwjglx/util/glu/tessellation/PriorityQ$Leq;Ljava/lang/Object;Ljava/lang/Object;)Z
      // 1a5: ifeq 1be
      // 1a8: aload 0
      // 1a9: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 1ac: iload 4
      // 1ae: aload 0
      // 1af: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 1b2: iload 4
      // 1b4: bipush 1
      // 1b5: isub
      // 1b6: iaload
      // 1b7: iastore
      // 1b8: iinc 4 -1
      // 1bb: goto 183
      // 1be: aload 0
      // 1bf: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.order [I
      // 1c2: iload 4
      // 1c4: iload 5
      // 1c6: iastore
      // 1c7: iinc 3 1
      // 1ca: goto 173
      // 1cd: aload 0
      // 1ce: aload 0
      // 1cf: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.size I
      // 1d2: putfield org/lwjglx/util/glu/tessellation/PriorityQSort.max I
      // 1d5: aload 0
      // 1d6: bipush 1
      // 1d7: putfield org/lwjglx/util/glu/tessellation/PriorityQSort.initialized Z
      // 1da: aload 0
      // 1db: getfield org/lwjglx/util/glu/tessellation/PriorityQSort.heap Lorg/lwjglx/util/glu/tessellation/PriorityQHeap;
      // 1de: invokevirtual org/lwjglx/util/glu/tessellation/PriorityQHeap.pqInit ()Z
      // 1e1: pop
      // 1e2: bipush 1
      // 1e3: ireturn
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant