diff options
Diffstat (limited to 'src/cuchaz/enigma/Deobfuscator.java')
| -rw-r--r-- | src/cuchaz/enigma/Deobfuscator.java | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java index 0847049..1178ed6 100644 --- a/src/cuchaz/enigma/Deobfuscator.java +++ b/src/cuchaz/enigma/Deobfuscator.java | |||
| @@ -200,6 +200,12 @@ public class Deobfuscator | |||
| 200 | className = classMapping.getDeobfName(); | 200 | className = classMapping.getDeobfName(); |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | // is this class even in the jar? | ||
| 204 | if( !m_jarIndex.containsObfClass( new ClassEntry( className ) ) ) | ||
| 205 | { | ||
| 206 | return null; | ||
| 207 | } | ||
| 208 | |||
| 203 | // set the type loader | 209 | // set the type loader |
| 204 | m_settings.setTypeLoader( new TranslatingTypeLoader( | 210 | m_settings.setTypeLoader( new TranslatingTypeLoader( |
| 205 | m_jar, | 211 | m_jar, |
| @@ -279,15 +285,22 @@ public class Deobfuscator | |||
| 279 | progress.onProgress( i++, deobfClassEntry.toString() ); | 285 | progress.onProgress( i++, deobfClassEntry.toString() ); |
| 280 | } | 286 | } |
| 281 | 287 | ||
| 282 | // get the source | 288 | try |
| 283 | String source = getSource( getSourceTree( obfClassEntry.getName() ) ); | 289 | { |
| 284 | 290 | // get the source | |
| 285 | // write the file | 291 | String source = getSource( getSourceTree( obfClassEntry.getName() ) ); |
| 286 | File file = new File( dirOut, deobfClassEntry.getName().replace( '.', '/' ) + ".java" ); | 292 | |
| 287 | file.getParentFile().mkdirs(); | 293 | // write the file |
| 288 | try( FileWriter out = new FileWriter( file ) ) | 294 | File file = new File( dirOut, deobfClassEntry.getName().replace( '.', '/' ) + ".java" ); |
| 295 | file.getParentFile().mkdirs(); | ||
| 296 | try( FileWriter out = new FileWriter( file ) ) | ||
| 297 | { | ||
| 298 | out.write( source ); | ||
| 299 | } | ||
| 300 | } | ||
| 301 | catch( Throwable t ) | ||
| 289 | { | 302 | { |
| 290 | out.write( source ); | 303 | throw new Error( "Unable to deobfuscate class " + deobfClassEntry.toString() + " (" + obfClassEntry.toString() + ")", t ); |
| 291 | } | 304 | } |
| 292 | } | 305 | } |
| 293 | 306 | ||