diff options
author | Ying Wang <wangying@google.com> | 2012-02-27 18:34:24 -0800 |
---|---|---|
committer | Ying Wang <wangying@google.com> | 2012-02-27 18:34:24 -0800 |
commit | 9f606f95f03a75961498803e24bee6799a7c0885 (patch) | |
tree | a45f4d74feda9b76277a0c9ced55ad15d82248a1 /src/proguard/optimize/DuplicateInitializerFixer.java | |
parent | cfead78069f3dc32998dc118ee08cab3867acea2 (diff) | |
download | android_external_proguard-9f606f95f03a75961498803e24bee6799a7c0885.tar.gz android_external_proguard-9f606f95f03a75961498803e24bee6799a7c0885.tar.bz2 android_external_proguard-9f606f95f03a75961498803e24bee6799a7c0885.zip |
Revert "Upgrade from Progaurd 4.4 to 4.7."cm-10.1.3-RC2cm-10.1.3-RC1cm-10.1.3cm-10.1.2cm-10.1.1cm-10.1.0-RC5cm-10.1.0-RC4cm-10.1.0-RC3cm-10.1.0-RC2cm-10.1.0-RC1cm-10.1.0cm-10.1-M3cm-10.1-M2cm-10.1-M1mr1.1-stagingjellybean-stablejellybeancm-10.1
This reverts commit cfead78069f3dc32998dc118ee08cab3867acea2.
Bug: 6079915
Diffstat (limited to 'src/proguard/optimize/DuplicateInitializerFixer.java')
-rw-r--r-- | src/proguard/optimize/DuplicateInitializerFixer.java | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/src/proguard/optimize/DuplicateInitializerFixer.java b/src/proguard/optimize/DuplicateInitializerFixer.java index 07b7d82..746d182 100644 --- a/src/proguard/optimize/DuplicateInitializerFixer.java +++ b/src/proguard/optimize/DuplicateInitializerFixer.java @@ -2,7 +2,7 @@ * ProGuard -- shrinking, optimization, obfuscation, and preverification * of Java bytecode. * - * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu) + * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -86,7 +86,7 @@ implements MemberVisitor, if (!programMethod.equals(similarMethod)) { // Should this initializer be preserved? - if (KeepMarker.isKept(programMethod)) + if (!KeepMarker.isKept(programMethod)) { // Fix the other initializer. programMethod = (ProgramMethod)similarMethod; @@ -95,23 +95,12 @@ implements MemberVisitor, int index = descriptor.indexOf(ClassConstants.INTERNAL_METHOD_ARGUMENTS_CLOSE); // Try to find a new, unique descriptor. - int typeCounter = 0; - while (true) + for (int typeIndex = 0; typeIndex < TYPES.length; typeIndex++) { - // Construct the new descriptor by inserting a new type - // as an additional last argument. - StringBuffer newDescriptorBuffer = - new StringBuffer(descriptor.substring(0, index)); - - for (int arrayDimension = 0; arrayDimension < typeCounter / TYPES.length; arrayDimension++) - { - newDescriptorBuffer.append(ClassConstants.INTERNAL_TYPE_ARRAY); - } - - newDescriptorBuffer.append(TYPES[typeCounter % TYPES.length]); - newDescriptorBuffer.append(descriptor.substring(index)); - - String newDescriptor = newDescriptorBuffer.toString(); + String newDescriptor = + descriptor.substring(0, index) + + TYPES[typeIndex] + + descriptor.substring(index); // Is the new initializer descriptor unique? if (programClass.findMethod(name, newDescriptor) == null) @@ -119,7 +108,7 @@ implements MemberVisitor, if (DEBUG) { System.out.println("DuplicateInitializerFixer:"); - System.out.println(" ["+programClass.getName()+"."+name+descriptor+"] ("+ClassUtil.externalClassAccessFlags(programMethod.getAccessFlags())+") -> ["+newDescriptor+"]"); + System.out.println(" ["+programClass.getName()+"]: "+name+descriptor+" -> "+newDescriptor); } // Update the descriptor. @@ -141,9 +130,12 @@ implements MemberVisitor, // We're done with this constructor. return; } - - typeCounter++; } + + throw new IllegalStateException("Can't find unique constructor descriptor for ["+ + programClass.getName()+"."+ + programMethod.getName(programClass)+ + programMethod.getDescriptor(programClass)+"]"); } } } |