summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dx/src/com/android/jack/dx/dex/file/StringIdsSection.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/dx/src/com/android/jack/dx/dex/file/StringIdsSection.java b/dx/src/com/android/jack/dx/dex/file/StringIdsSection.java
index b9d6c0d..53e5241 100644
--- a/dx/src/com/android/jack/dx/dex/file/StringIdsSection.java
+++ b/dx/src/com/android/jack/dx/dex/file/StringIdsSection.java
@@ -108,7 +108,21 @@ public final class StringIdsSection extends UniformItemSection {
* @return {@code non-null;} the interned string
*/
public StringIdItem intern(CstString string) {
- return intern(new StringIdItem(string));
+ if (string == null) {
+ throw new NullPointerException("string == null");
+ }
+
+ throwIfPrepared();
+
+ StringIdItem already = strings.get(string);
+
+ if (already != null) {
+ return already;
+ }
+
+ StringIdItem result = new StringIdItem(string);
+ strings.put(string, result);
+ return result;
}
/**