@@ -432,11 +432,26 @@ && isDoubleIf(ain.getNext().getNext())) {
432432 continue ;
433433 }
434434 MethodNode refMethod = TransformerHelper .findMethodNode (classNode , ((MethodInsnNode ) first ).name , "()V" );
435- AbstractInsnNode thirdInsn = refMethod .instructions .getFirst ().getNext ().getNext ();
436- if (!TransformerHelper .isPutStatic (thirdInsn , null , null , "[Ljava/lang/String;" )) {
437- continue ;
435+ AbstractInsnNode possPutStaticInsn = refMethod .instructions .getFirst ().getNext ().getNext ();
436+ if (!TransformerHelper .isPutStatic (possPutStaticInsn , null , null , "[Ljava/lang/String;" )) {
437+ possPutStaticInsn = Utils .getPrevious (refMethod .instructions .getLast ());
438+ if (!TransformerHelper .isPutStatic (possPutStaticInsn , null , null , "[Ljava/lang/String;" )) {
439+ continue ;
440+ }
441+ AbstractInsnNode prev = Utils .getPrevious (possPutStaticInsn );
442+ if (!TransformerHelper .isInvokeVirtual (prev , "java/lang/String" , "split" , "(Ljava/lang/String;)[Ljava/lang/String;" )) {
443+ continue ;
444+ }
445+ AbstractInsnNode firstReal = refMethod .instructions .getFirst ();
446+ if (!Utils .isInstruction (firstReal )) {
447+ firstReal = Utils .getNext (firstReal );
448+ }
449+ AbstractInsnNode insn7 = Utils .getNext (firstReal , 6 );
450+ if (!TransformerHelper .isInvokeVirtual (insn7 , "java/lang/StackTraceElement" , "getFileName" ,"()Ljava/lang/String;" )) {
451+ continue ;
452+ }
438453 }
439- FieldInsnNode insnNode = (FieldInsnNode ) thirdInsn ;
454+ FieldInsnNode insnNode = (FieldInsnNode ) possPutStaticInsn ;
440455 FieldNode field = TransformerHelper .findFieldNode (classNode , insnNode .name , insnNode .desc );
441456 Context context = new Context (provider );
442457 context .dictionary = classpath ;
0 commit comments