From 6d73fd7a993e270f557ccb2177074b00f0f26787 Mon Sep 17 00:00:00 2001 From: Mis012 Date: Wed, 26 Mar 2025 19:42:49 +0100 Subject: [PATCH] XmlBlock: implement nativeGetAttributeName, use getPooledString instead of mStrings.get --- .../content/android_content_res_XmlBlock.c | 6 ++++++ src/api-impl/android/content/res/XmlBlock.java | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/api-impl-jni/content/android_content_res_XmlBlock.c b/src/api-impl-jni/content/android_content_res_XmlBlock.c index 49e50460..af192a20 100644 --- a/src/api-impl-jni/content/android_content_res_XmlBlock.c +++ b/src/api-impl-jni/content/android_content_res_XmlBlock.c @@ -114,6 +114,12 @@ JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeData( return ResXMLParser_getAttributeData(parser, index); } +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeName(JNIEnv *env, jclass this, jlong parser_ptr, jint index) +{ + struct ResXMLParser *parser = (struct ResXMLParser *)_PTR(parser_ptr); + return ResXMLParser_getAttributeNameID(parser, index); +} + JNIEXPORT void JNICALL Java_android_content_res_XmlBlock_nativeDestroyParseState(JNIEnv *env, jobject this, jlong parser_ptr) { struct ResXMLParser *parser = (struct ResXMLParser *)_PTR(parser_ptr); diff --git a/src/api-impl/android/content/res/XmlBlock.java b/src/api-impl/android/content/res/XmlBlock.java index b5375eef..0248dc1c 100644 --- a/src/api-impl/android/content/res/XmlBlock.java +++ b/src/api-impl/android/content/res/XmlBlock.java @@ -137,7 +137,7 @@ final class XmlBlock { } public String getText() { int id = nativeGetText(mParseState); - return id >= 0 ? mStrings.get(id).toString() : null; + return id >= 0 ? (String)getPooledString(id) : null; } public int getLineNumber() { return nativeGetLineNumber(mParseState); @@ -165,7 +165,7 @@ final class XmlBlock { } public String getNamespace() { int id = nativeGetNamespace(mParseState); - return id >= 0 ? mStrings.get(id).toString() : ""; + return id >= 0 ? (String)getPooledString(id) : ""; } public String getName() { return nativeGetName(mParseState); @@ -175,7 +175,7 @@ final class XmlBlock { if (DEBUG) System.out.println("getAttributeNamespace of " + index + " = " + id); if (id >= 0) - return mStrings.get(id).toString(); + return (String)getPooledString(id); else if (id == -1) return ""; throw new IndexOutOfBoundsException(String.valueOf(index)); @@ -185,7 +185,7 @@ final class XmlBlock { if (DEBUG) System.out.println("getAttributeName of " + index + " = " + id); if (id >= 0) - return mStrings.get(id).toString(); + return (String)getPooledString(id); throw new IndexOutOfBoundsException(String.valueOf(index)); } public String getAttributePrefix(int index) { @@ -417,7 +417,7 @@ final class XmlBlock { public String getIdAttribute() { int id = nativeGetIdAttribute(mParseState); - return id >= 0 ? mStrings.get(id).toString() : null; + return id >= 0 ? (String)getPooledString(id) : null; } public String getClassAttribute() { return nativeGetClassAttribute(mParseState);